Birçok API için (en çok gördüğüm) ratelimiting, API Anahtarınızın veya OAuth kimlik bilgilerinizin bir işlevidir. (Google, Twitter, NOAA, Yahoo, Facebook, vb.) İyi haber şu ki, IP'nizi taklit etmeniz gerekmiyor, sadece oran limitine ulaştıkça kimlik bilgilerinizi değiştirmeniz gerekiyor.
Burada biraz utanmaz öz tanıtım ama özellikle bu sorunu ele almak için bir python paketi yazdım.
https://github.com/rawkintrevo/angemilner
https://pypi.python.org/pypi/angemilner/0.2.0
Bir mongodb arka plan programı gerektirir ve temel olarak anahtarlarınızın her biri için bir sayfa yaparsınız. Böylece her birine ayrı bir anahtar atanmış 4 e-posta adresiniz vardır. Anahtarı yüklediğinizde, günlük maksimum çağrıları ve kullanımlar arasındaki minimum süreyi belirtirsiniz.
Yükleme anahtarları:
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)
Sonra sıyırıcıyı çalıştırdığınızda örneğin NOAA api:
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'})
dönüşür:
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']})
5 l.check_out_api_key
anahtarınız varsa, en az kullanıma sahip anahtarı döndürür ve yeniden kullanılması için yeterli zaman geçene kadar bekler.
Son olarak, anahtarlarınızın ne sıklıkta kullanıldığını / kullanılabilir kalan kullanım süresini görmek için:
pprint(l.summary())
R için yazmadım çünkü çoğu kazıma python'da (çoğu kazıma) yapılır. Kolayca taşınabilir.
Bu, teknik olarak hız sınırlamasını aşabilirsiniz. Etik olarak ...
GÜNCELLEME Örnekte Google Rehber API'sı burada kullanılmıştır