抓取解压

对于一个经过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);

打完收工。

时间: 2024-10-29 19:07:51

抓取解压的相关文章

抓包工具Fidder详解(主要来抓取Android中app的请求)

抓包工具Fidder详解(主要来抓取Android中app的请求) 今天闲着没吊事,来写一篇关于怎么抓取Android中的app数据包?工欲行其事,必先利其器,上网google了一下,发现了一款神器:Fiddler,这个貌似是所有软件开发者必备神器呀!这款工具不仅可以抓取PC上开发web时候的数据包,而且可以抓取移动端(Android,Iphone,WindowPhone等都可以),太强大了,以前搞web的时候,知道有一款叫做HttpWatch工具,可以抓取web的请求数据包的,但是和这款神器来

ios开发-程序压后台后,悄悄的抓取数据~~

我们使用某个app的时候,当我们将程序压到后台之后,我们希望它还能从服务器抓取一些数据,类似微博,微信,qq这些程序压后台 之后,我们依然能看到icon上显示未读数量.但是ios系统是伪多任务操作系统. 当我们将程序压后台之后,大概过1分钟,程序就会被关闭.就不能抓取数据了.很久之前的做法是:压后台之后,播放一个没有声音 的音频,保证程序存活.然后苹果很快发现了这种方法,并禁止了.我们用这种方法提交审核之后,一般都会被苹果驳回.当然,苹果 依然很贴心的给我提供了相应的解决办法.(使用swift演

Charles抓取https请求详解

大家好,我是TT,互联网测试行业多年,没有牛逼的背景,也没有什么可炫耀的,唯独比他人更努力,在职场打拼.遇到过的坑,走过的弯路,愿意与大家分享,分享自己的经验,少走弯路.首发于个人公众号[测试架构师] 原文如下: 现在基本大部分网站都使用了https,所以要想抓到https的请求,首要任务是先有工具:charles.fiddler,先介绍下charles针对https请求的抓取方法,此方法兼容windows和mac用户(mac用户方法类似,如果有必要,请关注微信公众号:测试架构师,留言给我.后续

Fiddler抓取https请求 & Fiddler抓包工具常用功能详解

大家好,我是TT,互联网测试行业多年,没有牛逼的背景,也没有什么可炫耀的,唯独比他人更努力,在职场打拼.遇到过的坑,走过的弯路,愿意与大家分享,分享自己的经验,少走弯路.首发于个人公众号[测试架构师] 原文如下: 先来看一个小故事: 小T在测试APP时,打开某个页面展示异常,于是就跑到客户端开发小A那里说:"你这个页面做的有问题,页面展示异常":小A说:"这哪是我的问题,你去找后台吧,后台接口返回数据有问题":小T就屁颠屁颠的跑到后台接口开发小M那里说:"

PHP抓取及分析网页的方法详解

本文实例讲述了PHP抓取及分析网页的方法.分享给大家供大家参考,具体如下: 抓取和分析一个文件是非常简单的事.这个教程将通过一个例子带领你一步一步地去实现它.让我们开始吧! 首先,我首必须决定我们将抓取的URL地址.可以通过在脚本中设定或通过$QUERY_STRING传递.为了简单起见,让我们将变量直接设在脚本中. ? 1 2 3 <?php $url = 'http://www.php.net'; ?> 第二步,我们抓取指定文件,并且通过file()函数将它存在一个数组里. ? 1 2 3

(转)抓包工具Fidder详解(主要来抓取Android中app的请求)

今天闲着没吊事,来写一篇关于怎么抓取Android中的app数据包?工欲行其事,必先利其器,上网google了一下,发现了一款神器:Fiddler,这个貌似是所有软件开发者必备神器呀!这款工具不仅可以抓取PC上开发web时候的数据包,而且可以抓取移动端(Android,Iphone,WindowPhone等都可以),太强大了,以前搞web的时候,知道有一款叫做HttpWatch工具,可以抓取web的请求数据包的,但是和这款神器来比较,那都弱爆了!吹到现在都是无用的,下面就来看看实例吧!开始兴奋吧

Fiddler抓取https设置详解

很多使用fiddler抓包,对于http来说不需太多纠结,随便设置下就能用,但是抓取https就死活抓不了, 出现诸如以下问题: creation of the root certificate was not successful; Failed to find the root certificate in User Root List; The Root certificate could not be found; The root certificate could not be lo

数据抓取的艺术(一):Selenium+Phantomjs数据抓取环境配置

数据抓取的艺术(一):Selenium+Phantomjs数据抓取环境配置 2013-05-15 15:08:14 分类: Python/Ruby 数据抓取是一门艺术,和其他软件不同,世界上不存在完美的.一致的.通用的抓取工具.为了不同的目的,需要定制不同的代码.不过,我们不必Start from Scratch,已经有许多的基本工具.基本方法和基础框架可供使用.不同的工具.不同的方法.不同的框架的特点也不同.了解这些工具.方法和框架是首要任务,接下来就需要明白它们的差异都在哪里.什么情境该用什

[python]初试页面抓取——抓取沪深股市交易龙虎榜数据

[python]抓取沪深股市交易龙虎榜数据 python 3.5.0下运行 没做自动建立files文件夹,需要手动在py文件目录下建立files文件夹后运行 #coding=utf-8 import gzipimport http.cookiejar import urllib.request import urllib.parse import json import os import time import datetime def getOpener(head): # deal with