为什么我在使用urllib2打开网址时弄乱了字符?

时间:2011-08-29 14:11:09

标签: python urllib2 urllib

这是我的代码,你们也可以测试一下。我总是搞乱人物而不是页面来源。

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

2 个答案:

答案 0 :(得分:1)

正如布鲁斯已经提出的那样,压缩似乎是一个问题。服务器返回gzip压缩内容,但urllib2不支持自动gzip压缩。实际上,据我所知,服务器在这种情况下是行为不端的:它应该仅在存在Accept-encoding: gzip标头时压缩内容(您自己提供,或者如果它支持它,则由客户自动添加) )。

所以:要么使用自动支持它的库,比如httplib2(我已经使用相关页面进行了测试,并且它有效),或者自己解压缩(请参阅this SO question的答案)为了做到这一点,请注意在问题中检查服务器返回的标头是否内容是gzip压缩的)

答案 1 :(得分:0)

您使用支持即时压缩的用户代理提出请求。你确定输出不是gzip压缩的吗?尝试通过zlib module和/或打印标题

运行它