python3 requests br 中文乱码

一、问题

客户端发送以下信息:

Accept-Encoding : gzip, deflate, br

表示支持采用 gzip、deflate 或 br 压缩过的资源

而python3中的 requests只有response.text 和 response.content

  1. response.content
    字节方式的响应体,会自动为你解码 gzip 和 deflate 压缩。类型:bytes
  2. reponse.text
    字符串方式的响应体,会自动根据响应头部的字符编码进行解码。类型:str

也就是说requests默认不支持解码br

二、方法

  1. 去除编码类型br
Accept-Encoding = "gzip, deflate"
  1. 使用 brotli 进行页面解析
import brotli

...

if response.headers.get('Content-Encoding') == 'br':
	data = brotli.decompress(response.content)
	return data.decode('utf-8')
else:
	return response.text

...

三、参考文献

[1] willison. python3 requests 爬虫请求头解决gzip, deflate, br中文乱码问题[EB/OL]. 2020-09-09[2023-07-21]. https://www.cnblogs.com/willison/p/13830967.html.
[2] Leo_wl. brotli压缩[EB/OL]. [2023-07-21]. https://www.cnblogs.com/Leo_wl/p/9170390.html.
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值