如何通过地址获取经度和经度,而不会在python中出现太多请求错误

时间:2017-03-30 20:46:11

标签: python pandas geopy

我有一个包含5000建筑物的数据库,我想通过它的地址找到它们,所以我像这样使用GeoPy:

def getLalo(address):
    geolocator = Nominatim()
    location = geolocator.geocode(address)
    if location == None:
        return [0,0]
    return [location.latitude,location.longitude]

bmk['latitude'], bmk['longitude']= bmk.apply(lambda row: getLalo(row['full_address']), axis=1)

然而,好像我得到了GeocoderServiceError: HTTP Error 429: Too Many Requests

我该如何避免这种情况? THX!

1 个答案:

答案 0 :(得分:0)

如果您在短时间内发送请求, 必须考虑速率限制。

您将收到: 请求过多429 HTTP错误或超时。

尝试使用RateLimiter

from geopy.extra.rate_limiter import RateLimiter
geocode = RateLimiter(geolocator.geocode, min_delay_seconds=1)

参考 https://geopy.readthedocs.io/en/1.16.0/#usage-with-pandas