这是我的代码,你们也可以测试一下。我总是搞乱人物而不是页面来源。
Header = {"User-Agent": "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.8) Gecko/20100722 Firefox/3.6.8 GTB7.1 (.NET CLR 3.5.30729)"}
Req = urllib2.Request("http://rlslog.net", None, Header)
Response = urllib2.urlopen(Req)
Html = Response.read()
print Html[:1000]
通常Html
应该是页面来源,但它最终会成为大量混乱的字符。谁知道为什么?
BTW:我正在使用python 2.7
答案 0 :(得分:1)
正如布鲁斯已经提出的那样,压缩似乎是一个问题。服务器返回gzip压缩内容,但urllib2
不支持自动gzip压缩。实际上,据我所知,服务器在这种情况下是行为不端的:它应该仅在存在Accept-encoding: gzip
标头时压缩内容(您自己提供,或者如果它支持它,则由客户自动添加) )。
所以:要么使用自动支持它的库,比如httplib2(我已经使用相关页面进行了测试,并且它有效),或者自己解压缩(请参阅this SO question的答案)为了做到这一点,请注意在问题中检查服务器返回的标头是否内容是gzip压缩的)
答案 1 :(得分:0)
您使用支持即时压缩的用户代理提出请求。你确定输出不是gzip压缩的吗?尝试通过zlib module和/或打印标题
运行它