Python+人工智能

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)
上一篇 下一篇

猜你喜欢

热点阅读