利用Python爬蟲和高德地圖API獲取任意兩座城市之間的距離
作業中有時會遇到這樣一種場景:年末需要統計所有員工該年的航旅出差情況,然后根據他們的飛行距離補貼一定的交通費,例如如下所示情況:

然而,如果我們使用地圖APP等工具逐一進行手工查詢,在一家規模稍大的公司,成百上千條資料便很容易讓人崩潰,
此時,便需要一種能夠批量獲取多座城市的位置資訊以及他們之間的距離資訊的方法,
這里分享一種利用Python爬蟲和高德地圖API批量獲取資訊并自動匯出到CSV格式檔案的做法:
代碼原文如下:
import requests
from geopy.distance import geodesic
import csv
'''
例如,我希望獲得北京、上海、廣州、深圳這四座城市,
任意兩座城市之間的距離,以及他們相應的經緯度,只要
把這四座城市的名稱放到loc這個串列變數里就可以,如
果要獲得其他城市之間的距離,修改loc即可,
'''
loc = ["北京","上海","廣州","深圳"]
# 利用高德地圖API需要提供key,可以在官網上申請
key = '2ff259313e2a44392d570d5534358105'
# 獲取某地的經緯度
def getCoordinate(city):
url= 'https://restapi.amap.com/v3/geocode/geo?parameters?key='+str(city)+'&address='+str(city)+'&key='+str(key)
response = requests.get(url)
answer = response.json()
location = str(answer["geocodes"][0]["location"]).split(",")
return location
# 獲取兩城市之間的距離資訊
def calDistance(place1,place2):
coor1 = getCoordinate(place1)
coor2 = getCoordinate(place2)
distance = geodesic(coor1[::-1],coor2[::-1]).km
return distance
# 創建一個CSV檔案以存盤資訊
csv_file = open('城市距離.csv','w',newline='')
csv_writer = csv.writer(csv_file)
csv_writer.writerow(['城市一','城市二',
'城市一經度','城市一緯度',
'城市二經度','城市二緯度',
'距離(公里)'])
for i in loc:
for j in loc[loc.index(i)+1:]:
csv_writer.writerow([i,j,
getCoordinate(i)[0],getCoordinate(i)[1],
getCoordinate(j)[0],getCoordinate(j)[1],
calDistance(i,j)])
csv_file.close()
匯出到csv結果如下:

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/212839.html
標籤:其他
上一篇:五、Python中的正則運算式
