某乎的请求headers中含有: 'Accept-Encoding' : 'br,gzip, deflate'
其响应headers中含有: Content-Encoding:br
坑就来了,拿到的response.text是乱码,究其原因是br是一种压缩方式,Content-Encoding:br就导致我们爬取到的数据是乱码。
解决办法:
1.最直接简单有效的办法是请求头的Accept-Encoding中去掉br
2.不简单还不一定有效的办法:
pip install brotli==1.0.8
# 当客户端的请求携带请求头 `Accept-Encoding: br` 时,表示客户端希望获取对应资源时进行 Brotli压缩,在拿到相应数据时可以这样处理
content = brotli.decompress(response.content()).decode('UTF-8')
但是这种办法依然有可能报错
brotli.error: BrotliDecompress failed
这是brotli和python版本兼容问题导致的,需要改版本