今天在爬取百度地图数据时,一开始是可以爬到数据的,但是没有爬完就出现了如下图的报错。
百度了好久,有以下几种说法:
- 请求过于频繁。那就加上sleep语句,隔几秒再提交请求。但是还是会报错。说明不是这个问题。
- 要使用双引号(””)代替单引号(’’)。也不是这个问题。
-
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:呜呜呜,菜鸡落泪了,搞了好久,特意写下来学习一下。
版权声明:本文为ITmincherry原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。