python获取gzip压缩网页的源代码

想抓取某个网页的内容,但是decode的时候报错了。

UnicodeDecodeError: 'utf-8' codec can't decode byte 0x8b in position 1: invalid start byte

直接打印decode之前的内容,发现以 \x1f\x8b\x08\x00 开头,还有 =,“,[ 等字符。

搜索后发现是因为网页采用了gzip压缩过。那么我们只用解压就行了。

前面发起HTTP请求的代码不变,read之后先解压,再decode.

import zlib

req = urllib.request.Request(url)
req.add_header('User-Agent', 'Mozilla/5.0 (Windows NT 10.0; WOW64)')
htmlgzip = urllib.request.urlopen(req).read()
#解压
decompressed_data = zlib.decompress(htmlgzip, 16 + zlib.MAX_WBITS)
list = decompressed_data.decode('utf8').splitlines(True)[:]
result = ''
for x in list:
    result = result + x
#返回源代码
return result

发表评论

电子邮件地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据