爬虫 res.json() 报错 requests.exceptions.JSONDecodeError: Expecting value: line 1 column 1 (char 0)

当使用requests库的res.json()方法解析数据时,出现JSONDecodeError错误。排除了响应类型非JSON和请求头问题后,发现是header中意外包含了`Accept-Encoding: gzip, deflate`,导致接收的gzip压缩数据无法正确解码。删除或注释掉该行即可解决乱码问题。" 103315727,7411810,Vue项目中解决mui滑动导航栏问题,"['Vue框架', '移动端开发', 'mui库', 'webpack配置']

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

res.json() 报错排除常见原因的其他可能原因分析

爬虫用 json() 接收网页数据返回结果时,报错 JSONDecodeError: Expecting value: line 1 column 1 (char 0)

res = requests.post(post_url, headers=self.headers, json=data)
res.encoding = 'utf-8'
print(res.json())

报错信息

1. 首先排除网页数据响应类型不是 json 格式的原因。可在开发者工具【网络】- 【响应头】中查看响应类型。

在这里插入图片描述

显然此处报错不是 JSON 格式的问题。

2. 则看请求头是否携带 cookie, refer, cookie 是否过期等。

cookie及refer正常

发现也不是携带参数原因。

3. 之后经过一系列 res.text res.content json.dumps() json.loads() 调试,发现返回的始终是各种格式的乱码。
4. 最后发现是 header 中多了一行 "accept-encoding": "gzip, deflate, br"

该代码表明浏览器接受服务器返回压缩后的数据,由于浏览器对于从服务器中返回的 gzip 压缩后的网页数据,会自动解压缩,但爬虫模拟向服务器发送请求,携带了此 header 信息,而不具备解压缩的能力,所以返回的数据会乱码。此行代码删掉或注释即可。

"accept-encoding": "gzip, deflate, br"

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值