1. 本项目主要服务于物流同行,通过API抓取路径距离
#抓取始发地与目的地距离
#高德API
import requests
import pandas as pd
#获取城市经纬度定位
def get_loc(address, key):
#接口URL
url ='https://restapi.amap.com/v3/geocode/geo?'
#设置参数key、address
params = {
'key':key,
'address':address
}
#传入参数,get指令获取信息
response = requests.get(url, params= params, timeout = 30)
#将信息JS解析
r = response.json()
#获取经纬度
loc = r['geocodes'][0]['location']
return loc
#获取始发城市与目标城市的路径距离
def get_distance(origin, destination,key):
#接口URL
url = 'https://restapi.amap.com/v3/direction/driving?'
#设置参数key、address
params = {
'key':key,
'origin':origin,
'destination':destination
}
#传入参数,get指令获取信息
response = requests.get(url, params= params, timeout = 30)
#将信息JS解析
r = response.json()
#获取路径距离
dis = r['route']['paths'][0]['distance']
return dis
#key口令
key =
#城市列表读取路径
path_input =
#读取始发城市列表
df1 = pd.read_excel(path_input,sheet_name='始发城市')
#读取目标城市列表
df2 = pd.read_excel(path_input,sheet_name='目标城市')
#设置空列表,用于接受结果
results = []
#遍历始发城市
for x in df1['始发城市']:
#遍历目的城市
for y in df2['目标城市']:
try:
#获取始发城市经纬度
origin = get_loc(x, key)
#获取目标城市经纬度
destination = get_loc(y, key)
#获取路径距离
d = get_distance(origin, destination, key)
#将结果传入空列表
results.append([x,y,d])
except:
results.append([x,y])
print(x,y)
#将结果列表转换成df
df = pd.DataFrame(results,columns=['始发城市','目标城市','距离'])
#设置结果输出路径
path_output =
df.to_excel(path_output,index=False)
print('路径计算完成,已保存至:', path_output)