python爬虫问题之网页数据压缩
2016-12-03 本文已影响0人
9773deb7bcb4
爬取B站页面以及弹幕时发现获取的是乱码,使用chrome浏览器的检查功能抓取了一下发现页面是gzip压缩,xml是deflate压缩,解压数据后获取的乱码消失。
添加header
首先对http的request添加gzip的header
req.add_header(‘Accept-Encoding’, ‘gzip, deflate’);
deflate
import zlib
def deflate(data):
try: return
zlib.decompress(data, -zlib.MAX_WBITS)
except zlib.error:
return zlib.decompress(data)
gzip
from gzip import GzipFilefrom StringIO
import StringIO
def gzip(data):
buf = StringIO(data)
f = gzip.GzipFile(fileobj=buf)
return f.read()
判断
通过判断Content-Encoding属性来解压两种格式
encoding = response.info().get('Content-Encoding')
if encoding == 'gzip':
content = gzip(content)
elif encoding == 'deflate':
content = deflate(content)