你得到你所期望的HTML,但它是压缩。我试着用手此URL,并回来这个二进制烂摊子头:
Content-Encoding: gzip
我救响应主体到一个文件中,并能gunzip
它的命令行上。您还应该能够使用标准库的功能zlib
module在程序中对其进行解压缩。
因与zlib.decompress
困难的人更新 ...
压缩的数据,你会得到(或者至少我在Python 2.6了),显然有“gzip的头和尾”喜欢你预计在*.gz
文件,而zlib.decompress
预计“zlib包装”...可能。我一直得到一个无用的zlib.error
例外:
Traceback (most recent call last):
File "./fixme.py", line 32, in <module>
text = zlib.decompress(data)
zlib.error: Error -3 while decompressing data: incorrect header check
的解决方案是完全无证 Python标准库,但可在Greg Hewgill's answer发现一个问题关于gzip
流:你必须饲料zlib.decompress
一个wbits
说法,通过将幻数到一个未记录的模块级恒定< 叽,咕创建...>:
text = zlib.decompress(data, 16 + zlib.MAX_WBITS)
如果您觉得这个数据不够模糊,请注意这里的32
与16
一样神奇。
的这个唯一的提示被掩埋在original zlib's manual,将deflateInit2
作用下:
windowBits
也可以是大于15用于可选gzip的解码。添加16到windowBits
来写一个简单的gzip头和尾部围绕压缩数据而不是zlib包装。
...和inflateInit2
功能:
windowBits
也可以大于15可选gzip的解码。添加32 windowBits
使zlib的和的gzip自动头部检测解码,或增加16只解码的gzip格式 [...]
注意,zlib.decompress
docs明确地告诉你你无法做到这一点:
默认值为因此最高值,15。
但这是......与真的相反。
< 油烟,诅咒,咆哮 ...>
我试过你放的脚本,它的工作原理。你能具体说明哪些页面不是HTML格式吗? – tabchas 2015-02-09 03:49:06
我尝试过'url ='http:// mp3.zing.vn',并且返回的数据可能是 加密的。 – 2015-02-09 03:51:32