Python:更快的地理编码 API 方法
我用我的代码把60个地址转换成坐标,差不多要花1分钟。我希望结果能按顺序显示地址、纬度和经度。有没有更快的方法呢?谢谢!
代码:
import time
import requests
import json
import pandas as pd
import numpy as np
import string
addressList=['xxx','xx1'] #330,000 addresses in total
def get_latitude_longtitude(address, GOOGLE_PLACES_API_KEY):
url = 'https://maps.googleapis.com/maps/api/geocode/json?address=' + address + '&key=' + GOOGLE_PLACES_API_KEY
while True:
res = requests.get(url)
js = json.loads(res.text)
if js['status'] != 'OVER_QUERY_LIMIT':
time.sleep(1)
break
result = js['results'][0]['geometry']['location']
lat = result['lat']
lng = result['lng']
return address, lat, lng
lst=[]
for address in addressList:
GOOGLE_PLACES_API_KEY = 'kkkkkkk'
res = get_latitude_longtitude(address,GOOGLE_PLACES_API_KEY)
#print(res)
address=res[0]
lat=res[1]
lng=res[2]
lst.append(address)
lst.append(lat)
lst.append(lng)
1 个回答
0
你可以使用Python的multiprocessing库(或者类似的工具)来同时运行固定数量的进程。然后让每个进程以固定的速度发送请求,比如每秒发送一个请求。通过调整进程的数量,你就可以控制整体的请求速度。
Google地图平台的API有默认的使用限制,具体可以查看这个链接。
如果你想要尽可能快地发送请求,可以参考使用方向API网络服务的最佳实践,特别是礼貌使用Google API这一部分。简单来说,如果你试图发送请求的速度过快,反而可能会导致速度变慢(因为会出现重试的情况)。