Python 请求的 requests.get 数据包内容突然变乱码

2021-05-02 18:16:24 +08:00
 ALLROBOT
一小时前提交数据包返回的数据正常显示,现在不知怎么的突然变成乱码了

�_m���[41�[�բv� RC� Ѥs�w�Rv�Z`y �W�S�!�LG�MҪ��-K�%�0"�0g�(

经过 Fidder 检查(捕捉数据包的工具),浏览器请求数据包显示正常,只有 python 输出变成乱码

python 的返回数据包编码格式,xxx.encoding 为 utf-8,xxx.apparent_encoding 为 None

用网上的 new_re=re.text.encode(re.encoding).decode(re.apparent_encoding)试图解决乱码
然而输出错误
TypeError: decode() argument 1 must be str, not None

以下为原代码

url='https://bbs.imoutolove.me/thread_new.php?fid-174-page-1.html'
re=requests.get(url)
bs_re=BeautifulSoup(re.text,'lxml')
print(re.text)
bs_re_title=bs_re.find_all('span',class_='section-title')

for tag in bs_re_title:
print(tag.text)

挺简单的,几小时前返回正常中文的,现在突然返回一堆堆乱码,不清楚是什么原因导致的,请问如何解决?
1817 次点击
所在节点    Python
6 条回复
ysc3839
2021-05-02 18:53:11 +08:00
怀疑是 gzip 压缩了
johnsona
2021-05-02 18:58:06 +08:00
re.encoding='utf-8'
ALLROBOT
2021-05-02 19:22:39 +08:00
@johnsona 试过,依旧输出乱码
@ysc3839 感谢!!!把头部的 Accept-Encoding:gzip,br,deflate 的两个 gzip,br 去掉后,只保留 deflate 成功正常输出!
1462326016
2021-05-02 20:00:32 +08:00
request 默认不支持 br 压缩编码,所以请求头中不可以写 br 编码,可能是服务器由于一些原因更改了压缩方式,所以返回了 request 无法解码的数据,导致了乱码。
Liang
2021-05-02 20:03:33 +08:00
看这个乱码一般是 gzip
ALLROBOT
2021-05-05 21:23:35 +08:00
@1462326016 原来是这样,br 下次不加入头部信息了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/774655

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX