论坛首页 编程语言技术论坛

关于抓取网页乱码

浏览 4305 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2008-11-19  
使用HttpWebResponse中的GetResponse,,但是发现其CharacterSet获得编码有时候会有问题

而 HttpWebResponse.GetResponseStream返回的流是不可查找的。 这就意味着在获得页面信息后,采用正则获得真正页面charset,再去将该流转码成正确信息失败。

目前我的方法是两次取url以保证获得的页面信息是正确可读的。


想问下能否一次读取获得正确页面信息?
   发表时间:2008-11-20   最后修改:2008-11-20
这个原因不是HttpWebReponse的错,而是某些服务器的错。

因为HttpWebReponse读的是HTTP的头而不是HTML的头,它依赖于服务器必须正确的设置Content-type在HTTP的头部分里,原因也简单,你先告诉我什么编码,然后我把后面按这编码读出来。


一些服务器比如google的,它不设置Head的content-type,而是设置了html的meta,所以HttpWebReponse读出来就是空的。

你要是做爬虫的话,最好还是去parser charset。可以考虑读出来,parser charset,然后convert到taget charset.
0 请登录后投票
   发表时间:2008-11-21  
ray_linn 写道
这个原因不是HttpWebReponse的错,而是某些服务器的错。

因为HttpWebReponse读的是HTTP的头而不是HTML的头,它依赖于服务器必须正确的设置Content-type在HTTP的头部分里,原因也简单,你先告诉我什么编码,然后我把后面按这编码读出来。


一些服务器比如google的,它不设置Head的content-type,而是设置了html的meta,所以HttpWebReponse读出来就是空的。

你要是做爬虫的话,最好还是去parser charset。可以考虑读出来,parser charset,然后convert到taget charset.


我目前是拿不到的就parse charset, 但是获得charset后,还要再爬该网页一次,才能拿到正确信息。。

之所以不得不去再爬,是因为“而 HttpWebResponse.GetResponseStream返回的流是不可查找的。 这就意味着在获得页面信息后,采用正则获得真正页面charset,再去将该流转码成正确信息失败。 ”




0 请登录后投票
论坛首页 编程语言技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics