使用requests爬取汽车主机厂信息出现keyError错误
各位大神,大家好:小白一名,最近在学习requests相关知识,拿某汽车主机厂官网爬取经销商相关信息,出现keyError错误(请忽视我代码的丑陋):
代码如下:
'''爬取各汽车主机厂官网经销商数据'''
import requests
from bs4 import BeautifulSoup as bs
lis1=[]
lis2=[]
lis3=[]
url='https://cn-digital2-app.bmw.com.cn/dlo/v1/locales?brand_id=1'
headers={'User-Agent':'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36'}
r=requests.get(url,headers=headers)#发送请求,获得页面信息
r_json=r.json()#反序列化,将json数据转为字典
value=r_json['data']#json是个字典,它的值是列表
for i in range(len(value)):
p_name=value['name_cn']#获取省份
p_code=value['id']
lis1.append(p_code)
value_city=value['cities']
for j in range(len(value_city)):
c_name=value_city['name_cn']#城市名称
c_code=value_city['id']#城市代码
lis2.append()
for i in lis1:
url_1='https://cn-digital2-app.bmw.com.cn/dlo/v1/outlets'
params={'brand_id': '1','province_id': i}
r_2=requests.get(url,headers=headers,params=params)
r_2json=r_2.json()
dealer_data=r_2json['data']#根据分析,这是一个列表
for j in range(len(dealer_data)):
dealer_shortname=dealer_data['shortname_cn']
dealer_name=dealer_data.['coordinates']['name_cn']
dealer_addr=dealer_data['addr_cn']
dealer_tel=dealer_data['tel']
lis3.append()
错误提示见附件:
网站信息见附件:
我百度了一下,好像是因为没有“shortname_cn”等的KEY,可是网页里明明有数据啊,谢大神解惑!!!感谢!!!
本帖最后由 YunGuo 于 2021-2-5 02:23 编辑
很多处错误,爬虫写代码要细心。
把你代码改了一下后运行没问题。
import requests
lis1 = []
lis2 = []
lis3 = []
url = 'https://cn-digital2-app.bmw.com.cn/dlo/v1/locales?brand_id=1'
headers = {'User-Agent':'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36'}
r = requests.get(url, headers=headers)
r_json = r.json()['data']
for i in r_json:
p_name = i['name_cn']
p_code = i['id']
lis1.append(p_code)
value_city = i['cities']
for j in value_city:
c_name = j['name_cn']
c_code = j['id']
lis2.append()
for code in lis1:
url_1 = 'https://cn-digital2-app.bmw.com.cn/dlo/v1/outlets'
params = {'brand_id': 1, 'province_id': code}
r_2 = requests.get(url_1, headers=headers, params=params)
r_2json = r_2.json()['data']
for item in r_2json:
dealer_shortname = item['shortname_cn']
dealer_name = item['name_cn']
dealer_addr = item['addr_cn']
dealer_tel = item['tel']
lis3.append() 你直接浏览器访问https://cn-digital2-app.bmw.com.cn/dlo/v1/locales?brand_id=1不就知道有没有了?
确实没有啊,你是想爬取什么信息啊?你那个信息里面只有id和城市名
YunGuo 发表于 2021-2-4 22:57
很多处错误,爬虫写代码要细心。
把你代码改了一下后运行没问题。
谢谢,我复制代码确实可以实现 笨鸟学飞 发表于 2021-2-5 00:25
你直接浏览器访问https://cn-digital2-app.bmw.com.cn/dlo/v1/locales?brand_id=1不就知道有没有了?
确实 ...
谢谢,又学到一招,我是刚学,所以好多知识都不太明白,见笑了~{:5_92:}
页:
[1]