Für viele APIs (die meisten, die ich gesehen habe) ist das Ratelimiting eine Funktion Ihres API-Schlüssels oder Ihrer OAuth-Berechtigungsnachweise. (Google, Twitter, NOAA, Yahoo, Facebook usw.) Die gute Nachricht ist, dass Sie Ihre IP-Adresse nicht fälschen müssen, sondern lediglich die Anmeldeinformationen austauschen müssen, sobald sie das Ratenlimit erreicht haben.
Ein bisschen schamlose Eigenwerbung, aber ich habe ein Python-Paket geschrieben, um dieses Problem zu lösen.
https://github.com/rawkintrevo/angemilner
https://pypi.python.org/pypi/angemilner/0.2.0
Es erfordert einen Mongodb-Daemon und im Grunde genommen erstellen Sie eine Seite für jeden Ihrer Schlüssel. Sie haben also 4 E-Mail-Adressen, denen jeweils ein eigener Schlüssel zugewiesen ist. Wenn Sie den Schlüssel eingeben, geben Sie die maximale Anzahl von Anrufen pro Tag und die minimale Zeit zwischen den Verwendungen an.
Schlüssel laden:
from angemilner import APIKeyLibrarian
l= APIKeyLibrarian()
l.new_api_key("your_assigned_key1", 'noaa', 1000, .2)
l.new_api_key("your_assigned_key2", 'noaa', 1000, .2)
Dann, wenn Sie Ihren Schaber zum Beispiel die NOAA-API ausführen:
url= 'http://www.ncdc.noaa.gov/cdo-web/api/v2/stations'
payload= { 'limit': 1000,
'datasetid': 'GHCND',
'startdate': '1999-01-01' }
r = requests.get(url, params=payload, headers= {'token': 'your_assigned_key'})
wird:
url= 'http://www.ncdc.noaa.gov/cdo-web/api/v2/stations'
payload= { 'limit': 1000,
'datasetid': 'GHCND',
'startdate': '1999-01-01' }
r = requests.get(url, params=payload, headers= {'token': l.check_out_api_key('noaa')['key']})
Wenn Sie also über 5 Schlüssel verfügen l.check_out_api_key
, wird der am wenigsten verwendete Schlüssel zurückgegeben und es wird gewartet, bis genügend Zeit verstrichen ist, bis er wieder verwendet werden kann.
Um zu sehen, wie oft Ihre Schlüssel verwendet wurden / wie oft sie noch verwendet werden können, gehen Sie wie folgt vor:
pprint(l.summary())
Ich habe dies nicht für R geschrieben, da das meiste Scraping in Python ausgeführt wird (der größte Teil von MEINEM Scraping). Es könnte leicht portiert werden.
So können Sie Ratenbeschränkungen technisch umgehen. Ethisch ...
UPDATE Das Beispiel verwendet Google Places API hier