多くのAPI(私が見たほとんど)では、レート制限はAPIキーまたはOAuth資格情報の関数です。(Google、Twitter、NOAA、Yahoo、Facebookなど)良いニュースは、IPを偽装する必要はなく、レート制限に達したときに資格情報を交換するだけです。
ここでは少し恥知らずな自己宣伝がありますが、この問題を処理するためのPythonパッケージを作成しました。
https://github.com/rawkintrevo/angemilner
https://pypi.python.org/pypi/angemilner/0.2.0
mongodbデーモンが必要であり、基本的にはキーごとにページを作成します。したがって、4つの電子メールアドレスがあり、それぞれに個別のキーが割り当てられています。キーをロードするときに、1日あたりの最大コール数と使用間隔の最小値を指定します。
ロードキー:
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)
次に、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'})
になる:
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
は、使用回数が最も少ないキーを返し、再度使用するのに十分な時間が経過するまで待機します。
最後に、キーが使用された頻度/使用可能な残りの使用量を確認します。
pprint(l.summary())
ほとんどのスクレイピングはpythonで行われるため(私のスクレイピングのほとんど)、Rについてはこれを書きませんでした。簡単に移植できます。
これがレート制限を技術的に回避する方法です。 倫理的に ...
更新この例では、ここで Google Places APIを使用しています