美文网首页
c# 抓取网页源码后显示乱码的原因分析和解决方法

c# 抓取网页源码后显示乱码的原因分析和解决方法

作者: 名可谷 | 来源:发表于2020-04-01 12:26 被阅读0次

关键词:C#、DownloadData、网页乱码、gzip 

原因分析:

首先,目前大多数网站为了提升网页浏览传输速率都会对网站内容在传输前进行压缩,最常用的是GZIP压缩解压解压算法,也是支持最广的一种。

因为网站传输时采用的是GZIP压缩传输,如果我们接受webrespones接受数据未按照GZIP进行解压显示,那么就会造成乱码,如何知道网站是否是GZIP或者其他压缩方式传输的呢?

我这里用360浏览器做例子,如下图

360浏览器



解码gzip压缩格式网页的方法

private static string getGzip(string u)

{

        StringBuilder sb = new StringBuilder(204800);//200K对于频繁拼接的字符串,用stringbuilder比string节约内存和提升性能

        WebClient wc = new WebClient();//定义一个发送和接收web数据的公用方法类。

        wc.Headers[HttpRequestHeader.AcceptEncoding]="gzip,deflate";//接收gzip类型的数据

        wc.Headers[HttpRequestHeader.AcceptLanguage]="zh-CN,zh";//指定请求头的语言类型为中文, 

        byte[] buffer= wc.DownloadData(u);//将 wc对象的downloaddata()方法下载到的资源存入本地buffer中

        GZipStream g=new GZipStream((Stream)(new MemoryStream(buffer)),CompressionMode.Decompress);//定义一个压缩或者解压流的对象,设置为解压

        byte[] tmpbuffer=new byte[20480];//定一个20K的临时字节数组

        int len=g.Read(tmpbuffer,0,20480); // 

        while(len>0)

        {

                sb.Append(Encoding.Default.GetString(tmpbuffer,0,len));  //转换成相应的格式,比如使用的是GBK我们默认就是default,如果是UTF-8就写成UTF-8。这个可以通过右键查看源码找到编码格式。

                len=g.Read(tmpbuffer,0,20480); 

        }

        g.Close(); 

        return sb.ToString();

}

相关文章

  • c# 抓取网页源码后显示乱码的原因分析和解决方法

    关键词:C#、DownloadData、网页乱码、gzip 原因分析: 首先,目前大多数网站为了提升网页浏览传输速...

  • html-1

    一.浏览器打开网页产生乱码的原因的原因以及解决方法 产生原因 :网页产生乱码的根本原因是编写网页文件后保存的编码格...

  • RCurl包爬虫学习

    RCurl包学习 基础 getURL函数中的参数的解释 抓取网页中文乱码解决方法 使用getBinaryURL函数...

  • 【PHP】实现App接口遇到的错误

    1.数据输出相关 ** 1.1输出xml格式爆出如下错误** 解决方法:显示网页源码,查看错误产生原因常见原因汇总...

  • UIWebView加载网页乱码

    有的网页header标签是空的,没有设置编码,导致UIWebView加载网页显示乱码。解决方法:方法一、 方法二、

  • web项目经常遇到的乱码问题

    开发web项目经常会遇到请求接口乱码、提交表单乱码,存入数据库乱码,网页显示乱码等情况。 乱码的原因很简单,都是因...

  • 爬虫中常见问题

    1、爬取内容显示乱码 (2)解决方法 2、pymongo.errors.CursorNotFound: (1)原因...

  • 下载B站视频you-get: [Error] Unsupport

    1,问题。 2,问题原因。 URL的video后必须是av号,比如 3,解决方法。 点击查看网页源码。 复制hea...

  • Python爬虫 requests教学(五):常见异常处理

    Python爬虫、数据分析、网站开发等案例教程视频免费在线观看 网页出现乱码 出现乱码的原因是因为网页解码过程中没...

  • 为什么说python适合写爬虫

    抓取网页本身的接口 相比与其他静态编程语言,如java,c#,C++,python抓取网页文档的接口更简洁;相比其...

网友评论

      本文标题:c# 抓取网页源码后显示乱码的原因分析和解决方法

      本文链接:https://www.haomeiwen.com/subject/ksxguhtx.html