概要
Amazon ECS (ECommerceService) はショッピングサイトの Amazon の情報を検索することができる API です
今回は Ruby から API をコールして商品情報を取得してみました
環境
- macOS 10.13.2
- Ruby 2.4.1p111
- amazon-ecs 2.5.0
ライブラリインストール
- bundle init
- vim Gemfile
gem "amazon-ecs"
bundle install --path vendor
Nokogiri のインストールでこける場合は以下のコマンドを実行後、再度 bundle install してください
- brew install libxml2
bundle config build.nokogiri --use-system-libraries --with-xml2-include=$(brew --prefix libxml2)/include/libxml2
必要な情報の取得
AWS のアクセスキー/シークレットアクセスキーおよび Amazon アソシエイト用のトラッキング ID を取得します
アクセスキーの取得
https://affiliate.amazon.co.jp/assoc_credentials/home にアクセスして「認証キーを管理する」を選択します
すると AWS の認証画面になるので Amazon アソシエイトにログインした ID/PW でログインします
ログインが完了すると IAM と呼ばれる AWS のアカウントを管理する画面になるので、そこで「アクセスキー (アクセスキー ID とシークレットアクセスキー) 」を選択します
すでにキーがあればそれを使っても OK ですがない場合は作成してください
ここで表示されるアクセスキーとシークレットアクセスキーは忘れないようにしましょう
シークレットアクセスキーはこの画面からは確認できないので忘れると再発行する必要があります
トラッキング ID の取得
トラッキング ID は商品したのがどのアカウントか紐付けるための情報です
Amazon アソシエイトにログインして上段のアカウントから「トラッキング ID の管理」を選択します
するとトラッキング ID の一覧が表示されます
まだない場合は新規で作成すれば OK です
サンプルコード
- vim test_ecs.rb
require 'amazon/ecs'
Amazon::Ecs.configure do |options|
options[:AWS_access_key_id] = 'your access key'
options[:AWS_secret_key] = 'your secret key'
options[:associate_tag] = 'traking ID'
end
res = Amazon::Ecs.item_search(
'figma',
:response_group => 'Large',
:search_index => 'All',
:country => 'jp'
)
res.items.each do |item|
puts item
end
- bundle exec ruby test_ecs.rb
すると XML がづらーっと表示されます
デフォルトだと 10 件分取得できるようです
例えばタイトルと価格を取得したい場合は以下のようにします
res.items.each do |item|
puts item.get('ItemAttributes/Title')
puts item.get('ItemAttributes/ListPrice/Amount')
end
またアフィリエイトリンクを生成する場合は以下のようにするとできるようです
res.items.each do |item|
puts item.get('DetailPageURL')
end
検索に関するオプション :response_group
に関して指定できる値はこちらを参照してください
また、:search_index
に関してはこちらを参照してください
503 You are submitting requests too quickly. Please retry your requests at a slower rate. 対応
これは単純にリクエストしすぎだよーというエラーになります
公式を見ると 1req/1sec まで OK とあるようですが、その間隔でリクエストすると当然のようにエラーになります
詳細な理由はわかりませんがエラーが発生する場合は 1 分ほどおいてからリクエストすると良いと思います
最後に
Ruby で Amazon Advertising API を試してみました
試すのは非常に簡単かなと思います
ただ頻繁に 503 エラーが発生するのでむしろ 503 エラーと格闘する時間のほうが長いかなと思います
0 件のコメント:
コメントを投稿