码迷,mamicode.com
首页 > 其他好文 > 详细

抓取解压

时间:2015-01-28 19:51:12      阅读:265      评论:0      收藏:0      [点我收藏+]

标签:

对于一个经过Gzip压缩的网页,如果网页直接用浏览器打开,当然没什么问题,因为浏览器会自动的替您解压,当然这个时候,你查看网页源代码,看到的应该是正常的html代码。
可是如果使用HttpWebResponse来获取网页内容的时候,就比较麻烦,因为,你首先获取到的是一个回应流,当然,对于网页来说,本质上是个文本内容,所以要使用StreamReader来读取,当然这个时候需要将网页的编码格式给扔进去,如果没有Gzip压缩,那么一路顺利,肯定能得到正常的结果,一旦压缩了,那麻烦就来了。
无Gzip压缩情况:
技术分享
有Gzip压缩,但无解压:
技术分享
技术分享
可以看的出来Gzip压缩的流,用平常的方式取到的内容是乱码。
有Gzip压缩,有解压的情况:
技术分享
完整代码如下:
无Gzip压缩:
          HttpWebRequest wr = (HttpWebRequest)HttpWebRequest.Create("http://blog.sina.com.cn/dalishuishou");
          HttpWebResponse wsp = (HttpWebResponse)wr.GetResponse();

          Stream st = wsp.GetResponseStream();
          StreamReader sr = new StreamReader(st, Encoding.Default);
          string s = sr.ReadToEnd();
          Console.WriteLine(s);
有Gzip压缩:
          HttpWebRequest wr = (HttpWebRequest)HttpWebRequest.Create("http://icy-rainy-day.blog.sohu.com/");
          HttpWebResponse wsp = (HttpWebResponse)wr.GetResponse();

          Stream st = wsp.GetResponseStream();
          if (wsp.ContentEncoding.ToLower().Contains("gzip"))
          {
              st = new GZipStream(st, CompressionMode.Decompress);
          }
          StreamReader sr = new StreamReader(st, Encoding.Default);
          string s = sr.ReadToEnd();
          Console.WriteLine(s);
打完收工。

抓取解压

标签:

原文地址:http://blog.csdn.net/hongsejiaozhu/article/details/43234609

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!