小白也能看懂的百度地图API使用案例(附全国高速收费站点数据~)
写在前面
大家好,我是饭都吃不起的南南
昨天帮朋友爬了全国的高速站点收费站这里下载
【http://www.bestunion.cn/gaosu/p_4/sfzlist.html】
由于该网站并没有西藏和海南省的高速收费站,所以并没有获取到,爬取这个挺简单的,我就不说了.(说多了容易戴上银手镯,我怂)
数据如下
调用百度API批量拾取坐标
接下来需要调用百度API批量拾取坐标,不会python的同学也没关系,可以打开【https://maplocation.sjfkai.com/】这个网站批量转,但是要注意,在地址前面加上所在地区,不然就会QAQ!!!
下面开始写代码【复制粘贴】
pandas读取excel数据存为列表
import pandas as pd
def excel_one_line_to_list():
df = pd.read_excel(r"C:\Users\Administrator\Desktop\收费站\2021-8-27-10-13-41-4442610865300-【陕西高速收费站一览表】.xlsx", usecols=[0],
names=None) # 读取项目名称列,不要列名
df_li = df.values.tolist()
result = []
for s_li in df_li:
result.append(s_li[0])
#print(result)
return result#return返回结果值
if __name__ == '__main__':
result = excel_one_line_to_list()#接收结果
地址转换为经纬度所以选择的是地理编码,如果要搞别的事情的话,可以去查帮助文档。
import requests
import json
def getUrl(*address):
'''
调用地图API获取待查询地址专属url
最高查询次数30w/天,最大并发量160/秒
'''
ak = '你的key'
if len(address) < 1:
return None
else:
for add in address:
url = 'http://api.map.baidu.com/geocoding/v3/?address={inputAddress}&output=json&ak={myAk}'.format(inputAddress=add,myAk=ak)
yield url
key未认证的用户每天调用api的次数限制为0.6w,认证后为3w
def getPosition(url):
'''返回经纬度信息'''
res = requests.get(url)
json_data = json.loads(res.text)
if json_data['status'] == 0:
lat = json_data['result']['location']['lat'] #纬度
lng = json_data['result']['location']['lng'] #经度
else:
print("Error output!")
return json_data['status']
return lat,lng
if __name__ == "__main__":
address = result
for add in address:
add_url = list(getUrl(add))[0]
print(add_url)
try:
lat,lng = getPosition(add_url)
print("{0}|经度:{1}|纬度:{2}.".format(add,lng,lat))
except Error as e:
print(e)
返回结果如下
http://api.map.baidu.com/geocoding/v3/?address=禹门口收费站&output=json&ak=yvc2TW9lD5rMiubbR0or57iVuDQiFcNU
禹门口收费站|经度:110.63335672712498|纬度:35.66392482522151.
http://api.map.baidu.com/geocoding/v3/?address=龙门收费站&output=json&ak=yvc2TW9lD5rMiubbR0or57iVuDQiFcNU
龙门收费站|经度:114.31678129149563|纬度:23.676445987337065.
http://api.map.baidu.com/geocoding/v3/?address=韩城收费站&output=json&ak=yvc2TW9lD5rMiubbR0or57iVuDQiFcNU
韩城收费站|经度:110.47940351187505|纬度:35.48304612715598.
http://api.map.baidu.com/geocoding/v3/?address=芝川收费站&output=json&ak=yvc2TW9lD5rMiubbR0or57iVuDQiFcNU
芝川收费站|经度:110.41152009160538|纬度:35.38365354048929.
http://api.map.baidu.com/geocoding/v3/?address=合阳收费站&output=json&ak=yvc2TW9lD5rMiubbR0or57iVuDQiFcNU
合阳收费站|经度:110.1669576741416|纬度:35.218007273465126.
http://api.map.baidu.com/geocoding/v3/?address=澄城收费站&output=json&ak=yvc2TW9lD5rMiubbR0or57iVuDQiFcNU
澄城收费站|经度:109.94180943535946|纬度:35.00705384279941.
http://api.map.baidu.com/geocoding/v3/?address=孙镇收费站&output=json&ak=yvc2TW9lD5rMiubbR0or57iVuDQiFcNU
孙镇收费站|经度:117.70541929687147|纬度:37.037346543797625.
http://api.map.baidu.com/geocoding/v3/?address=蒲城收费站&output=json&ak=yvc2TW9lD5rMiubbR0or57iVuDQiFcNU
蒲城收费站|经度:109.61161649430977|纬度:34.913113042128124.
......
python真香!源码这里下载
赞 (0)