爬虫报错simplejson.errors.JSONDecodeError: Expecting value: line 1 column 1 (char 0)

博主在爬取百度地图数据时遇到报错,尝试了多种解决方案,如增加请求间隔、修改引号格式等。最终发现是由于部分返回数据并非JSON格式导致的问题。通过筛选出合格的请求参数并构造get请求,成功解决了问题。博客记录了这一过程,对于遇到类似问题的开发者有一定参考价值。

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

今天在爬取百度地图数据时,一开始是可以爬到数据的,但是没有爬完就出现了如下图的报错。
在这里插入图片描述
百度了好久,有以下几种说法:

  1. 请求过于频繁。那就加上sleep语句,隔几秒再提交请求。但是还是会报错。说明不是这个问题。
  2. 要使用双引号("")代替单引号(’’)。也不是这个问题。
  3. json数据格式问题。因为爬到的数据有些不是json格式,所以报错。正解!我打印了get得到的结果,报错之前的是html文本格式,并不是json。不得不说,hj大佬太强了!解决方法是:构造get请求参数param,把不合格数据筛掉(大佬说就是这样写的,我。。。行吧)
    下面是关键部分:
    原来的报错代码:
url = url_base + '?' + 'address=' + address  + '&output=' + output + '&ak=' + ak 
res = requests.get(url)
temp = json.loads(res.text)
url = url_base
data = {
   'ak': ak,
   'address': address,
   'output': output
}
res = requests.get(url, headers=headers, params=data)  # 添加请求头
print(res.text)
temp = json.loads(res.text)

PS:呜呜呜,菜鸡落泪了,搞了好久,特意写下来学习一下。

评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值