У меня следующий вопрос, я хочу настроить подпрограмму для выполнения итераций внутри кадра данных (панд) для извлечения данных долготы и широты после предоставления адреса с помощью библиотеки 'geopy'.
подпрограмма, которую я создал, была:
import time
from geopy.geocoders import GoogleV3
import os
arquivo = pd.ExcelFile('path')
df = arquivo.parse("Table1")
def set_proxy():
proxy_addr = 'http://{user}:{passwd}@{address}:{port}'.format(
user='usuario', passwd='senha',
address='IP', port=int('PORTA'))
os.environ['http_proxy'] = proxy_addr
os.environ['https_proxy'] = proxy_addr
def unset_proxy():
os.environ.pop('http_proxy')
os.environ.pop('https_proxy')
set_proxy()
geo_keys = ['AIzaSyBXkATWIrQyNX6T-VRa2gRmC9dJRoqzss0'] # API Google
geolocator = GoogleV3(api_key=geo_keys )
for index, row in df.iterrows():
location = geolocator.geocode(row['NO_LOGRADOURO'])
time.sleep(2)
lat=location.latitude
lon=location.longitude
timeout=10)
address = location.address
unset_proxy()
print(str(lat) + ', ' + str(lon))
Проблема, с которой я столкнулся, заключается в том, что при запуске кода выдается следующая ошибка:
GeocoderQueryError: Ваш запрос был отклонен.
Я попытался создать, не передав ключ в API Google, однако получаю следующее сообщение:
KeyError: 'http_proxy'
и если я удаляю оператор unset_proxy ()
из for, я получаю следующее сообщение:
GeocoderQuotaExceeded: данный ключ превысил лимит запросов за 24 часа или отправилслишком много запросов за слишком короткий промежуток времени.
Но я сделал только 5 запросов сегодня, и я помещаю 2-секундный сон между запросами.Должен ли период быть длиннее?
Есть идеи?