网上摸索了两三天,最后还看到提供此类服务的第三方软件,居然要收费,真的是知识创造财富啊。
其实调取地图不难,更普通的网页爬虫差不多,都是用到requests这个函数,区别在于地图平台需要自己去注册账号,然后申请key。
注:地图平台建议使用高德地图,因为每天的搜索条数多一些。
第一步,去高德地图开发平台注册个人账户,然后新建应用,最后会生成一个key
这一步不赘述了,网上有很多大神已经写了,可参考https://zhuanlan.zhihu.com/p/96838566
第二步,python代码(代码是网上大神整理得来的,感谢大神)
import json import math import requests import ProcessTools.tools as tools #大神写的包 import os key = [\'\'] #你自己申请的key #这里修改高德地图搜索范围,最好用行政区划分,这样返回的数据条不会太多,后面方便写成循环语句 area_code = {\'罗湖区\': 440303, \'福田区\': 440304, \'南山区\': 440305, \'宝安区\': 440306, \'龙岗区\': 440307, \'盐田区\': 440308, \'龙华区\': 440309, \'坪山区\': 440310, \'光明区\': 440311} area_road = {\'罗湖区\': [], \'福田区\': [], \'南山区\': [], \'宝安区\': [], \'龙岗区\': [], \'盐田区\': [], \'龙华区\': [], \'坪山区\': [], \'光明区\': []} def get_busstop(area: str, page: int): data = [] # 保存指定区域的公交站点名称 parameters = {\'key\': key[0], \'types\': 150700&150701&150702&150703, #高德POI分类编码表与城市编码表 \'city\': area_code[area], \'citylimit\': \'true\', \'offset\': 25, \'page\': page, \'output\': \'JSON\'} res = requests.get(\'https://restapi.amap.com/v3/place/text?parameters\', params=parameters) json_dict = json.loads(res.text) poi_list = json_dict[\'pois\'] count = json_dict[\'count\'] # 当前区域公交站点个数 for poi in poi_list: data.append(poi[\'name\']+ \'\t\' + poi[\'address\'] + \'\t\' + poi[\'location\'] + \'\t\' + poi[\'adname\']) return count, data def mymain(): for area in area_code.keys(): print("当前区域:%s 当前页数:1" % area) count, roads_info = get_busstop(area, 1) area_road[area] = roads_info count = float(count) total_pages = int(math.ceil(count / 25.0)) for page in range(2, total_pages + 1): print("当前区域: %s 当前页数: %s" % (area, page)) try: count, roads_info = get_busstop(area, page) area_road[area].extend(roads_info) except: print("未完成") continue for area, roads_info in area_road.items(): print("保存区域%s:" % area) current_path = os.getcwd() tools.saver(roads_info,file_path= current_path+r\'\data-output\busstop\{}.txt\'.format(area)) print("保存完毕!!!") mymain()
最后,会在路径下保存所有行政区的所有车站信息。
参考视频网址:https://www.bilibili.com/video/BV1na411w7df?from=search&seid=1163701277294648103
欢迎讨论学习!!!