求奥迪官方经销商相关信息python爬虫代码
各位大神好:求奥迪官方经销商信息(经销商名称、省份、城市、地址、电话等))代码!
因为我只学过requests和beautifulsoup,如果可以的话,请使用这个,感谢! 网站发一下 柿子饼同学 发表于 2021-3-15 10:44
网站发一下
https://contact.audi.cn/dealer_procity.html{:5_111:} 这有点南,我尽力了{:10_266:}首先,要知道所有的代码在哪,可以从文件入手,如图0.这就找到了
然后按照网址进入 【传送门】
你看看它的源码图1
代码如下
import re
import requests as r
headers={"User-Agent":
"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:85.0) Gecko/20100101 Firefox/85.0"}
url = 'https://contact.audi.cn/dictionary_js/map_dealer.js?v=0.3'
res = r.get(url,headers=headers)
res.encoding #解码,不然是繁体字
l = re.findall(r'dealers.+]', res.text)这里只好用正则,不然没法弄然后得到一个列表,里面就是一切信息,不过我后面也化简不了了,只能先这样了
然后就是你为什么要爬这个网站,用课上教的例子随便写写它不香吗ε=( o`ω′)ノ{:10_250:}
本帖最后由 YunGuo 于 2021-3-16 15:10 编辑
import re
import csv
import requests
def get_js():
url = 'https://contact.audi.cn/dictionary_js/map_dealer.js?v=0.3'
res = requests.get(url)
js = re.findall(r'var dealers = \[];(.*?)type\', res.text, re.S)
return js
def get_city(js):
# 获取省份
provinces = re.findall("dprovinces\[\d+\]=\['(\d+)','\w(.*?)'\];", js)
province_dic = {code : province_name for code, province_name in provinces}
# 获取城市
city_infos = re.findall(r"dcitys\['(\d+)'\]=(.*?);", js)
citys_dic = {}
for city_info in city_infos:
c_code, citys = city_info
cit = {city: city for city in eval(citys)}
citys_dic.update({province_dic: cit})
return citys_dic
def get_distributor(js, citys_dic):
# 获取经销商信息
distributor_infos = re.findall(r"dealers\['(\d+)'\]=(.*?);", js)
distributor_dic = {}
distributor_lis = []
for distributor_info in distributor_infos:
codes, infos = distributor_info
province = ''
city = ''
for k,v in citys_dic.items():
for kk,vv in v.items():
if codes == kk:
province = k
city = vv
break
for info in eval(infos):
distributor_name = info
distributor_add = info
distributor_tel = f'{info[-1]}-{info}'
distributor_lis.append()
return distributor_lis
def save(item):
# 保存
with open('audi.csv', 'a', newline='') as f:
writer = csv.writer(f)
writer.writerow(['省份', '城市', '经销商', '地址', '联系方式'])
writer.writerows(item)
print('保存完成')
if __name__ == '__main__':
js_code = get_js()
city_info = get_city(js_code)
distributor_lis = get_distributor(js_code, city_info)
save(distributor_lis) 柿子饼同学 发表于 2021-3-15 15:09
这有点南,我尽力了首先,要知道所有的代码在哪,可以从文件入手,如图0.这就找到了
然后按照网 ...
谢谢大神,因为实际当中需要用这个,自己在爬取的时候,感觉书上的都用不到,挫败感十足。。。 YunGuo 发表于 2021-3-16 00:25
我刚才在pycharm上试了一下,还没有通过,不过先给最佳答案了,大神! 本帖最后由 YunGuo 于 2021-3-16 15:12 编辑
不分南北东西 发表于 2021-3-16 09:09
我刚才在pycharm上试了一下,还没有通过,不过先给最佳答案了,大神!
我运行没有问题。你运行如果有问题,可以把报错信息发给我看看。
另外,之前在复制代码的时候漏了一个引入requests库,上面代码已经重新编辑补上。 YunGuo 发表于 2021-3-16 15:08
我运行没有问题。你运行如果有问题,可以把报错信息发给我看看。
另外,之前在复制代码的时候漏了一个 ...
运行没有问题了,大神,感谢 YunGuo 发表于 2021-3-16 15:08
我运行没有问题。你运行如果有问题,可以把报错信息发给我看看。
另外,之前在复制代码的时候漏了一个 ...
大神,你好:
今年3月份的时候,我发子一个求奥迪官方经销商相关信息代码的帖子,当时你帮我解决了。我今天复习代码的时候,有一个地方不太明白,再次请教一下,盼答复,感谢!
url = 'https://contact.audi.cn/dictionary_js/map_dealer.js?v=0.3'
res = requests.get(url)
js = re.findall(r'var dealers = \[];(.*?)type\', res.text, re.S)
return js
倒数第二行是什么意思啊(我自行运行了一下,如果没有就不会换行),感谢! 不分南北东西 发表于 2021-6-8 10:53
大神,你好:
今年3月份的时候,我发子一个求奥迪官方经销商相关信息代码的帖子,当时你帮我解决了。我 ...
re.findall返回的是一个列表
就是第一个元素 wp231957 发表于 2021-6-8 11:00
re.findall返回的是一个列表
就是第一个元素
谢谢!!!
页:
[1]