Amazon Product Advertising API を使って kakaku.com の価格一覧表示をしてみたい


環境/前提

OS レベルで環境依存はしていないと思いますが、Cygwin や Mac OS X でも動くと思いますが、自分は VMWare 上の Ubuntu を使っています。言語は Ruby。gem などが動いていることが前提となります。

事前準備

Access Key ID と Secret Access Key

AWS Identity and Access Management(IAM)の Access Key ID と Secret Access Key が必要です。以下を参考に、まずアクセスキーを作成してください。

Access Key ID と Secret Access Key はファイルで落とせるので保存しておいてくといいと思います。

アソシエイトID を作成

次に、アソシエイトIDを作ります。アフィリエイトなどいらないのですが、作っておいたほうがいいようです。詳しくは以下に。

ruby gem をインストール

Amazon Product Advertising API は別に難しい API ではないので Ruby の追加パッケージ無しでも使えますが、せっかくあるので amazon-ecs を使います。Linux 系ならインストールは以下のとおり。ほかの sudo がいるかいらないか程度の差だと思います。

$ sudo gem install amazon-ecs

商品を検索してみる

上記準備がすべて成功したっぽかったら以下のようにコードを書いてみる。Amazon::Ecs.options は上記で準備したもの。Amazon::Ecs.item_search では検索したい商品名やジャンルなどを入れます。自分はアメリカにいるので :country => 'us' になっていますが、日本の amazon 商品を見たければ jp とか入れればいいとおもいます。

require 'amazon/ecs'

Amazon::Ecs.options = {
    :associate_tag     => 'philosong-20', 
    :AWS_access_key_id => 'XXXXXXXXXXXXXXX', 
    :AWS_secret_key    => 'XXXXXXXXXXXXXXX'
}

res = Amazon::Ecs.item_search(
    'EOS 5Ds R',
    :browse_node    => '3017941',
    :response_group => 'ItemAttributes, Images',
    :search_index   => 'Electronics',
    :country        => 'us')

res.items.first(5).each do |item|
    puts item.get('ASIN') + ':' + item.get('ItemAttributes') #+ ':' + item.get('ItemAttributes/Price')
end

browser_node って?

商品カテゴリーの番号です。amazon のトップページからカテゴリーに飛ぶと、URL は...

http://www.amazon.com/Digital-SLRs-Cameras-Photo/b/ref=dp_bc_5?ie=UTF8&node=3017941

などとなっていると思います。この node の値が browser node となります。検索したい商品を絞り込みたいときに有効です。node の一覧は日本の方は https://affiliate.amazon.co.jp/gp/associates/help/t100 辺りを見るとわかると思います。