浏览 4305 次
锁定老帖子 主题:关于抓取网页乱码
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2008-11-19
而 HttpWebResponse.GetResponseStream返回的流是不可查找的。 这就意味着在获得页面信息后,采用正则获得真正页面charset,再去将该流转码成正确信息失败。 目前我的方法是两次取url以保证获得的页面信息是正确可读的。 想问下能否一次读取获得正确页面信息? 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间: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. |
|
返回顶楼 | |
发表时间: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,再去将该流转码成正确信息失败。 ” |
|
返回顶楼 | |