抓取解压
2024-11-20 14:29:39 203人阅读
对于一个经过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);
打完收工。
抓取解压
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉:
投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。