WebRequest 获取网页乱码

问题:在用WebRequest获取网页源码时得到的源码是乱码。

原因:1,编码不对

解决办法:设置对应编码

WebRequest request = WebRequest.Create(Url);
WebResponse response = await request.GetResponseAsync();

Stream stream = response.GetResponseStream();
StreamReader reader = new StreamReader(stream, Encoding.GetEncoding(coding));//这里的coding是页面的编码,可以用Ie右键查看编码。
Result = reader.ReadToEnd();

reader.Dispose();
reader.Dispose();

2,页面进行压缩了

看看html的head,ContentEncoding是否是gzip如果是的话需要解压。//下面的代码是在winrt下的

      WebRequest request = WebRequest.Create(Url);
                WebResponse response = await request.GetResponseAsync();
                Debug.WriteLine(((HttpWebResponse)response).StatusDescription);
                if (response.Headers.AllKeys.Contains("Content-Encoding") && response.Headers["Content-Encoding"].ToLower() == "gzip")//如果使用了GZip则先解压
                {
                    using (System.IO.Stream streamReceive = response.GetResponseStream())
                    {
                        using (var zipStream =
                            new System.IO.Compression.GZipStream(streamReceive, System.IO.Compression.CompressionMode.Decompress))
                        {
                            using (StreamReader sr = new System.IO.StreamReader(zipStream, Encoding.GetEncoding(coding)))
                            {
                                Result = sr.ReadToEnd();
                            }
                        }
                    }
                }

WebRequest 获取网页乱码

时间: 2024-10-11 17:40:18

WebRequest 获取网页乱码的相关文章

c#利用WebClient和WebRequest获取网页源代码的比较

前几天举例分析了用asp+xmlhttp获取网页源代码的方法,但c#中一般是可以利用WebClient类和WebRequest类获取网页源代码.下面分别说明这两种方法的实现. WebClient类获取网页源代码 WebClient类 WebClient类位于System.Net命名空间下,WebClient类提供向URI标识的任何本地.Intranet或Internet资源发送数据以及从这些资源接收数据的公共方法. 源代码 ///引用命名空间using System.IO;using Syste

获取网页乱码

1.是用curl抓取的数据是用类似gzip压缩后的数据导致的乱码.乱码:curl www.1ting.com |more乱码:curl -H "Accept-Encoding: gzip"www.1ting.com | more不乱码:curl -H "Accept-Encoding: gzip"www.1ting.com | gunzip | more 不乱码:curl www.1616.net |more乱码:curl -H "Accept-Encod

java 如何获取网页的动态内容,并解析网页内容

(笔记) 获取网页的动态内容参考 https://pastebin.com/raw/FePkm2kp Maven: <!--获取网页源码,包括动态内容--><dependency> <groupId>htmlunit</groupId> <artifactId>htmlunit</artifactId> <version>1.14</version></dependency> 实现: WebClie

IXMLHTTPRequest获取网页源码的心得

在万一老师的博客看到一种利用IXMLHTTPRequest来获取网页源码的方法,但有2个问题没解决,自己研究了下改进了方法. 1.如果网页进行301转跳将无法获取源码 2.如果网站是gb2312编码将获取的是乱码 /////以下方法使用的是Delphi xe2编写 uses MsXML,activex; function GETHTML (const URL : string):string; // XMLHTTP接口Var XMLHTTP:IServerXMLHTTPRequest; HTML

WebClient和WebRequest获取html代码

HTML: <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtm

获取网页里的邮箱

private void button1_Click(object sender, EventArgs e) //点击获取网页邮箱 { if (textBox1.Text.Trim() != "") { HttpWebRequest wrst = (HttpWebRequest)WebRequest.Create(textBox1.Text); //创建对网页内容(源码)的访问请求(文本框1输入网址) HttpWebResponse wrpse = (HttpWebResponse)w

C# HttpWebRequest 绝技 根据URL地址获取网页信息

如果要使用中间的方法的话,可以访问我的帮助类完全免费开源:C# HttpHelper,帮助类,真正的Httprequest请求时无视编码,无视证书,无视Cookie,网页抓取 1.第一招,根据URL地址获取网页信息 先来看一下代码 get方法 复制代码 publicstaticstring GetUrltoHtml(string Url,string type) { try { System.Net.WebRequest wReq = System.Net.WebRequest.Create(U

爬虫rewquests爬去网页乱码问题

requests在爬取网页时候时候中文显示乱码 import requests url = 'http://www.neihan8.com/wenzi/index_2.html' res = requests.get(url)res.encoding #获取res的编码格式res.headers #获取Content-Type内容res.apparent_encoding #获取网页正确的编码格式 html = res.text# 返回的结果是处理过的Unicode类型的数据 print(res

C#获取网页的HTML码、下载网站图片、获取IP地址

1.根据URL请求获取页面HTML代码 /// <summary> /// 获取网页的HTML码 /// </summary> /// <param name="url">链接地址</param> /// <param name="encoding">编码类型</param> /// <returns></returns> public static string Get