Amazonにアクセスして取得できる商品データには2種類あります。簡易版と詳細版です。パラメーターのtype=lite or heavyという項目で指定します。liteは簡易版という事もあって得られる情報の量が少ないのであまり使うことがないかもしれません。しかしその代わりに情報が少ないのでレスポンスが早いという利点があります。とりあえず簡易版の商品データの構造を見てみましょう。
<?xml version="1.0" encoding="UTF-8"?>
<ProductInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://xml.amazon.com/schemas3/dev-lite.xsd">
<Request>
<Args>
<Arg value=" アクセスしたブラウザの情報 " name="UserAgent"></Arg>
<Arg value=" リクエストID " name="RequestID"></Arg>
<Arg value=" BrowseNode番号 " name="BrowseNodeSearch"></Arg>
<Arg value=" 国番号 " name="locale"></Arg>
<Arg value=" 頁 " name="page"></Arg>
<Arg value=" デベロッパ・トークン " name="dev-t"></Arg>
<Arg value=" アソシエイトID " name="t"></Arg>
<Arg value=" XSLのURI " name="f"></Arg>
<Arg value=" 検索する商品のジャンル " name="mode"></Arg>
<Arg value=" データタイプ " name="type"></Arg>
</Args>
</Request>
<TotalResults> 検索された商品件数 </TotalResults>
<TotalPages> トータルの頁数 </TotalPages>
<Details url=" Amazonへの商品リンク ">
<Asin> ASINコード </Asin>
<ProductName> 商品名 </ProductName>
<Catalog> カタログ名 </Catalog>
<Artists> ---- Catalog = Musicの時 ----
<Artist> アーティスト名 </Artist>
</Artists>
<Authors> ---- Catalog = Bookの時 ----
<Author> 著者名 <Author>
</Authors>
<ReleaseDate> 発売日 </ReleaseDate>
<Manufacturer> 販売元 </Manufacturer>
<ImageUrlSmall> 画像(小)のURI </ImageUrlSmall>
<ImageUrlMedium> 画像(中)のURI </ImageUrlMedium>
<ImageUrlLarge> 画像(大のURI) </ImageUrlLarge>
<Availability> 在庫情報 </Availability>
<ListPrice> 定価 </ListPrice>
<OurPrice> 販売価格 </OurPrice>
</Details>
<Details url=" Amazonへの商品リンク ">
-- 以下略 --
</Details>
</ProductInfo>
とまぁ上記のような形式で返ってきます。今回はBrowse Node Searchですけど他の検索でも返ってくる商品データ形式自体はほとんど変わりません。変わってくるのはRequest/Args要素以下のArg要素が多少変わって来ます。Request要素以下はなんの情報かといいますと、その名の通りリクエスト情報です。Arg要素の上2行はブラウザの情報(IEとかネスケとか)とリクエストIDになります。それ以下の要素はAmazonのDBにアクセスする時にパラメーターを付加しますがその付加したパラメータがRequest要素以下に収納されています。検索サイトを作る場合はここの情報を読み取って、今何ページ目を見ているかを把握して前後頁へのリンクを作成したりします。
Amazonの商品データの中にCatalog要素があります。これはmodeと似たようなもんなんですけどMusicとかBookとかDVDなどの商品分類です。特定のCatalogに属した商品だけ存在する要素というものもあります。
今回紹介している簡易版だと2種類だけなんですが。Catalog=Musicの時にArtists/Artist要素が現れます。Catalog=Bookの時はAuthors/Author要素が出てきます。全部の商品に要素が出ればいいのですけどアーティスト名が登録されていないとCatalog=MusicのときでもArtists/Artist要素が現れません。というわけでCatalog=○○の時に現れる要素が更に存在しているかを調べないといけません。
次にデータタイプがheavyの時を見てみましょう。詳細版だとさすがに様々な情報を診ることが出来るようになります。レビューの平均点や、レビュー内容、ランキング情報などなど。今回もBrowseNode検索で得られるデータをもとに見てみます。
<?xml version="1.0" encoding="UTF-8"?>
<ProductInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://xml.amazon.com/schemas3/dev-heavy.xsd">
<Request>
<Args>
<Arg value=" ブラウザ情報 " name="UserAgent"></Arg>
-- 以下略 --
</Args>
</Request>
<TotalResults> 検索された商品件数 </TotalResults>
<TotalPages> トータルの頁数 </TotalPages>
<Details url=" Amazonへの商品リンク ">
<Asin> ASINコード </Asin>
<ProductName> 商品名 </ProductName>
<Catalog> カタログ名 </Catalog>
<Artists> ---- Catalog = Musicの時 ----
<Artist> アーティスト名 </Artist>
</Artists>
<Authors> ---- Catalog = Bookの時 ----
<Author> 著者名 <Author>
</Authors>
<Starring> ---- Catalog = DVDの時 ----
<Actor> 俳優・女優名 </Director>
</Starring>
<Directors> ---- Catalog = DVDの時 ----
<Director> 監督名 </Director>
</Directors>
<ReleaseDate> 発売日 </ReleaseDate>
<Manufacturer> 販売元 </Manufacturer>
<ImageUrlSmall> 画像(小) </ImageUrlSmall>
<ImageUrlMedium> 画像(中) </ImageUrlMedium>
<ImageUrlLarge> 画像(大) </ImageUrlLarge>
<ListPrice> 定価 </ListPrice>
<OurPrice> 販売価格 </OurPrice>
<UsedPrice> 中古価格 </UsedPrice>
<SalesRank> ランキング </SalesRank>
<Lists>
<ListId> リストマニアID(この商品をリストマニアに登録している人のID) </ListId>
</Lists>
<BrowseList>
<BrowseNode>
<BrowseId> BrowseNode番号 </BrowseId>
<BrowseName> 検索したBrowseNode以外にどこに登録されているか </BrowseName>
</BrowseNode>
</BrowseList>
<Tracks> ---- Catalog = Music ----
<Track> 収録曲目 </Track>
</Tracks>
<Media> メディア情報(CD-ROM,DVD,大型本,コミックなど) </Media>
<NumMedia> メディア枚数 </NumMedia>
<ISBN> ISBNコード </ISBN> ---- Catalog = Bookの時 ----
<Features>
<Feature> 商品の特徴 </Feature>
</Features>
<Platforms> プラットフォーム </Platforms> ---- Catalog = Software or Video Gamesの時 ----
<Availability> 出荷情報 </Availability>
<ProductDescription> メーカーやAmazonのレビュー </ProductDescription>
<Reviews>
<AvgCustomerRating> レビュー平均点 </AvgCustomerRating>
<TotalCustomerReviews> 総レビュー数 </TotalCustomerReviews>
<CustomerReview>
<Rating> 点数 </Rating>
<Summary> レビュータイトル </Summary>
<Comment> レビュー内容 </Comment>
</CustomerReview>
</Reviews>
<SimilarProducts>
<Product> 関連商品(この商品を買った人が同時に買った物のASINコード)</Product>
</SimilarProducts>
</Details>
<Details url=" Amazonへの商品リンク ">
-- 以下略 --
</Details>
</ProductInfo>
取り合えずこんな感じでしょうか。これ以外にも後少しあるんですが多分使わないと思いますので・・・。全部知りたい人はAmazon Web ServicesのSDKを見てください。あと注意しないといけないのは通常は、
<Asin> ASINコード </Asin>
ASINコードのように要素が1つというものが殆どなのですが、中には要素が2つ以上存在するものがあります。
<Artists> <Artist> アーティスト名 </Artist> <Artist> アーティスト名 </Artist> </Artists>
アーティスト名を例に取りますが複数件登録されている場合は同じ要素が続けて出力されます。このように複数件以上登録されている可能性があるものは、「Artist、Author、Actor、Director、ListId、BrowseNode、Track、Feature、CustomerReview、Product」などですね。自分でXSLとかCGIスクリプトを組む場合はこの辺を考慮する必要が出てくるでしょう。
AmazonのDBにアクセスした時、この情報が全て出てくるわけではありません。音楽CDだからといって全て収録曲目が見られるわけではありません。Webサービスのデータベースに登録されていないと見られません。エディッターレビューもAmazon自身のレビューは取得して閲覧できます。Amazon以外の例えば「DVD NAVIGATOR」などから取得しているレビューは権利上AWSでは取得する事が出来ません。Amazon上で見ることが出来てもWebサービス用のデータベースに登録されていないと、その情報は見ることが出来ないのです。