2013年9月10日火曜日

「Amazon Product Advertising API」を使って商品画像URLを得るには?

Amazonの商品画像を機械的に検索して取得するには「Product Advertising API」しかないだろう。

はたして、このAPIで取得できる情報から画像URLを得ることはできるのだろうか?

「Product Advertising API」のアカウントは取得しているものとする。(ということは、Amazonの通常アカウントとアソシエイトアカウントを取得しているということでもある)

まず、このページ(Product Advertising API)の「Manage Your Account」に行く。

次に、「Access Identifiers」テーブルの「Click here」をクリックして「アマゾン ウェブ サービス」のページに行く。

そして、そのページの「アクセスキー」タブにある「アクセスキー ID」と「シークレットアクセスキー」を控えてこのページへ行く。

Signed Requests Helper - Amazon Product Advertising API

「アクセスキー ID」を「AWS Access Key ID」に、「シークレットアクセスキー」を「AWS Secret Access Key」に入力する。

「Unsigned URL」に次のようなURLを入力する

http://ecs.amazonaws.jp/onca/xml?Service=AWSECommerceService
&Version=2011-08-01
&AssociateTag=トラッキングID(〜-22)
&Operation=ItemSearch
&SearchIndex=All
&Keywords=キーワード

ページ下の方にある「Display Signed URL」というボタンをクリックすると各種テキストエリアに情報がフィルされる。

そのうち、「Signed URL」のテキストをコピーしてブラウザでアクセスするとXMLが返ってくる。

そのXMLの中に画像のURLがあるだろうと期待してそれらしい項目を探すが、無い!!

ダメかもしれないと諦めかけた時、普通のユーザーが商品リンクを作る時に画像だけのリンクを作ることができることを思い出した。そのリンクはこんな感じだ。

<a href="http://www.amazon.co.jp/gp/product/B00CITD1G6/ref=as_li_tf_il?ie=UTF8&camp=247&creative=1211&creativeASIN=B00CITD1G6&linkCode=as2&tag=トラッキングID">
 <img border="0" src="http://ws-fe.amazon-adsystem.com/widgets/q?_encoding=UTF8&ASIN=B00CITD1G6&Format=_SL160_&ID=AsinImage&MarketPlace=JP&ServiceVersion=20070822&WS=1&tag=トラッキングID" >
</a>

つまり、このimgタグのsrcパラメータのURLを改造すれば取得できるんじゃないか?と(^^);

商品に応じて動的な部分は「ASIN」パラメータっぽい。ASINならAPIで取得できていたので、全く別の商品のASINを与えると見事に画像を取得できた。

これで一応APIを使って画像URLを構築することはできるようにはなったわけだ。

しかし、APIはアクセス制限が非常にキビシイということが分かった_| ̄|○

Product Advertising APIへのアクセスのために使用される各アカウントは、1時間につき2,000リクエストまでの当初利用限度が認められます。その後は、各アカウントは、30日間に発生する出荷された商品の1時間あたりの収益100円ごとに、1時間につき500リクエスト(1時間につき最大25,000リクエストまで)が受けられます。

このAPIはかなり利用シーンが制限されるだろう。ドキュメントも2011年くらいで更新が止まっている感じだし、API自体が無くならないとも限らないな。。。と感じた。

こちらをかなり参考にさせて頂いた。
Amazon Web サービス入門(Product Advertising API)