Python で Amazon Product Advertising API から商品情報取得
Pythonから Amazon Product Advertising API を使用しました。
しかし、APIを叩いていると503エラーが度々出るため、エラーハンドリングを行います。
503 エラー対処
エラーが起きた場合、再度 API を叩く処理を追加します。
Amazon Product Advertising API は1秒間に1回、1時間に3600回の制限があります。
しかし、その制限以外でも 503エラーがでる場合があるようです。
import bottlenose from bs4 import BeautifulSoup from urllib.error import HTTPError import time ACCESS_KEY = "****" SECRET_ACCESS_KEY = "****" ASSOCIATE_TAG = "****" def error_handler(err): ex = err['exception'] if isinstance(ex, HTTPError) and ex.code == 503: time.sleep(1) # 1秒待つ return True amazon = bottlenose.Amazon(ACCESS_KEY, SECRET_ACCESS_KEY, ASSOCIATE_TAG, Region="JP", ErrorHandler=error_handler) isbn = "4774142298" response = amazon.ItemLookup(ItemId=isbn, ResponseGroup="Images,ItemAttributes,BrowseNodes", SearchIndex="Books", IdType="ISBN") # xmlとして検索 soup = BeautifulSoup(response,"lxml") title = soup.find('title').text asin = soup.find('asin').text url = soup.find('detailpageurl').text print("%s" % (title)) print("%s" % (asin)) print("%s" % (url))
注意すべきはエラーが起きた際のリクエスト間隔で、公式では約0.1秒待つサンプルが載っていました。
しかし、Amazon API では早すぎるため 1秒に変更しています。
コメント