アマゾンWebサービス(AWS)利用メモ
2005年02月13日 プログラミングTIPS
本、エレクトロニクス、DVDなどさまざまな商品を豊富に取りそろえているAmazon.co.jp。
このアマゾンには、Amazon Webサービス(AWS)という商品情報を取得するためのWEBサービスが用意されています。
このサービスが、どんなサービスなのか簡単に説明するとするなら、
「アマゾンの商品情報データベースにアクセスして、情報を利用できる」
ような感じのサービスです。
このサービスを元に作ってみたページは
→[Z]ZAPAnetサーチ
以下、アマゾンWebサービスに関するメモ。
(個人的なメモなので、内容の保証はありません)
このアマゾンには、Amazon Webサービス(AWS)という商品情報を取得するためのWEBサービスが用意されています。
このサービスが、どんなサービスなのか簡単に説明するとするなら、
「アマゾンの商品情報データベースにアクセスして、情報を利用できる」
ような感じのサービスです。
このサービスを元に作ってみたページは
→[Z]ZAPAnetサーチ
以下、アマゾンWebサービスに関するメモ。
(個人的なメモなので、内容の保証はありません)
無料デベロッパー・トークンを申し込み、デベロッパーキット(SDK)をダウンロードする
アマゾンのサイトへ行き、申し込む。アフィリエイトをしたい場合には、アソシエイトプログラムにも申し込む。
AWSで利用できる機能を理解する
アマゾンでは、XML/HTTPとSOAPの2種類が利用できるようになっている。自分の環境に合わせてどちらを利用するかを決める。
RESTでXMLを取得するためのパラメーターを確認する
通信は全てHTTPを使用。2005年2月時点では、Amazon E-Commerce Service 4.0(ECS 4.0)が利用できる。
URLはhttps://webservices.amazon.co.jp/onca/xml。
MethodはGET。
Parameterは、ドキュメントを読んで確認する。
Service=AWSECommerceService
&SubscriptionId=[登録したsubscription ID]
&AssociateTag=[アソシエイトID]
&Version=[バージョン指定]
問い合わせの種類を決める
問い合わせの種類として、&Operation=ItemSearchのパラメーターを追加する。(その他の情報を取得したい場合には変更する)
取得したい情報を決める
たくさんの情報取得と画像が必要な場合は、&ResponseGroup=Large,ItemAttributes,Imagesとする。(その他の情報を取得したい場合には変更する)
取得する商品の種類を決める
すべての商品情報が欲しい場合は、Blended。本の情報が欲しい場合には、Books。
音楽の情報が欲しい場合には、Musicなどとする。
&SearchIndex= Blended
検索結果のページを指定する
1ページ目の場合は、1を指定する。&ItemPage=1
出力するフォーマットを指定する
XMLで取得する場合には、text/xmlを指定する。&ContentType=text/xml
実際にkeyword検索でXMLを取得してみる
パラメーターにKeywordsを追加する。&Keywords="エンコードした文字列"を追加する。
アマゾンの場合、文字コードがUTF-8なので注意する。
SJISやEUC-JPなどでファイルを作成している場合、まずUTF-8にエンコードしてから、さらにURLエンコードする。
仮にEUC-JPで作成したPHPファイルの場合、
urlencode(mb_convert_encoding("キーワード", "UTF-8", "EUC-JP")のように変換する。
例:全てのブラウズ(カテゴリ、ジャンル)情報から”ドラクエ”でXMLを取得する場合
https://webservices.amazon.co.jp/onca/xml?これでXMLを取得できる。(見やすくするため、改行を入れてあるが実際には一行)
Service=AWSECommerceService
&SubscriptionId=*********
&AssociateTag=*********-22
&Operation=ItemSearch
&Version=2004-10-04
&ResponseGroup=Large
&SearchIndex=Blended
&ItemPage=1
&Keywords=%E3%83%89%E3%83%A9%E3%82%AF%E3%82%A8
&ContentType=text/xml
その他のパラメータを試す
その他のパラメーターに関しては、自分の好きなように追加し、試してみる。取得したXMLファイルをXSLを用いて変換する
xslパラメータを追加して、XSLTモードでXMLをHTMLに変換する。これで誰にでも見やすい形にデータを変換できる。
&Style=自分のxsl.xsl(XSLTスタイルシートに関するこの記事での説明は無し)
取得したXMLファイルをパースする
XSLTスタイルシートを使いたくない場合には、自分でXMLファイルをパースする。SAXやDOMなどの技術を使い変換してHTMLファイルなどにする。
(パースに関するこの記事での説明は無し)
SOAPで情報を取得する
SOAPの技術が使える人は、こちらの方法も試してみる。まとめ
- これだけ情報量の多いアマゾンのデータベースを利用できるのはかなり良い
- ドキュメントが英語でわかりにくい
- パラメーターがたくさんあって、最初は理解しにくい
- XMLの要素の作りが複雑でわかりにくい
- 取得できるXMLの情報はさすが
- サーバーのレスポンスはそこそこ
- サーバー側の技術を使わなくても、XSLTだけでも利用できるのは便利
- ドキュメントが英語でわかりにくい
アマゾンは、現状に慢心することなく、WEBサービスなどのサービスも提供しているところがさすがです。
評価点やレビュー内容なども取得できるので、変換の方法によっては、本家アマゾンよりわかりやすいページ構成も可能かもしれません。
試しにアマゾン検索、楽天検索、ビッダーズ検索を組み合わせてサイトを作ってみました。
→[Z]ZAPAnetサーチ