PHP を用いて AWS から ASIN に該当する商品情報を取得する

SPECIAL

Amazon Web Services (AWS) を利用して、ASIN に該当する商品の詳細情報を PHP から取得してみます。


AWS から商品情報を取得する

Amazon Web Services のアクセスキーを取得する で取得した Amazon Product Advertising API のアクセスキーを使用して、Amazon Web Services (AWS) から商品情報を取得してみます。

ここでは、AWS に PHP からリクエストを送信できる環境を整える で記したのと同じように、PHP から Services_Amazon ライブラリを使用して、情報を取得してみたいと思います。

 

例えば ASIN が B001TI6T34 の商品情報を取得したい場合には、次のようなプログラムになります。

$amazon = new Services_Amazon(ACCESS_KEY, SECRET_ACCESS_KEY);

$amazon->setLocale('JP');

 

$options = array('ResponseGroup', 'Large');

 

$result = $amazon->ItemLookup('B001TI6T34', $options);

で指定している ASIN という ID は、Amazon の商品ページ、例えば "きくの IFC コーヒー ドリップバッグ スペシャルブレンド" 等の商品ページ内で確認することができるようになっています。

 

このようにすることで、Amazon Web Services から返された XML 情報が、配列の形で $result に保存されます。

取得されたデータの例は、取得できた配列のダンプを ItemLookup API で取得した内容のサンプル に記してみましたので、プログラミングの際はそこに記した構造と照らし合わせながらコーディングすると楽になると思います。

なお、ASIN が見つからないなどの場合でエラーとなった場合には、"ItemLookup" 関数の戻り値を "PEAR::isError" 関数に渡すと false となるので、それで判断することができます。

 

ItemLookup のオプションについて

ItemLookup メソッドに渡す $options によって取得できる商品情報が変化します。

ResponseGroup

取得する商品情報を調整するのは 'ResponseGroup' キーのようですので、これにどういった値を設定すれば、どのような値を取り得るのかを整理してみようと思います。

平成 23 年 2 月 6 日の時点では、次のような内容を取得することができました。

Small ASIN
DetailPageURL
ItemLinks
ItemAttributes
商品の ID (ASIN) や詳細情報の URL (DetailPageURL)、欲しいものリストや友達に知らせるなどのリンク先 URL (ItemLinks)、商品名・商品グループ・タイトル (ItemAttributes) が取得できます。
Medium ASIN
DetailPageURL
ItemLinks
SalesRank
SmallImage
MediumImage
LargeImage
ImageSets
ItemAttributes
OfferSummary
"Small" の情報の他、売上ランキング (SalesRank)、小さい画像 (SmallImage)、中くらいの画像 (MediumImage)、大きめの画像 (LargeImage)、大中小いくつかの商品画像 (ImageSets)、商品の価格や在庫数などの情報 (OfferSummary) が取得できます。また、商品情報 (ItemAttributes) は、寸法や重量などの "Small" よりも詳細な情報が取得されるようです。
Large ASIN
DetailPageURL
ItemLinks
SalesRank
SmallImage
MediumImage
LargeImage
ImageSets
ItemAttributes
OfferSummary
Offers
SimilarProducts
Tracks
BrowseNodes
"Medium" の情報の他、各社の価格や在庫状況 (Offers)、こんな商品も買っています情報 (SimilarProducts)、商品を辿る手掛かりとなるブラウズノード情報 (BrowseNodes) を取得できます。音楽 CD 等の場合には収録曲の情報 (Tracks) も取得されます。
Accessories ASIN ?
AlternateVersions ASIN ?
BrowseNodes ASIN
BrowseNodes
商品を辿る手掛かりとなるブラウズノードの ID や名称といった情報を取得できます。
Collections ASIN ?
EditorialReview ASIN ?
Images ASIN
SmallImage
MediumImage
LargeImage
ImageSets
小さい画像 (SmallImage)、中くらいの画像 (MediumImage)、大きめの画像 (LargeImage)、大中小いくつかの商品画像 (ImageSets) といった情報を取得できます。
ItemAttributes ASIN
DetailPageURL
ItemLinks
ItemAttributes
詳細情報の URL (DetailPageURL)、欲しいものリストや友達に知らせるなどのリンク先 URL (ItemLinks)、商品の名前・商品グループ・タイトル・寸法・重量などといった詳細な商品情報 (ItemAttributes) が取得できます。
ItemIds ASIN ?
ListmaniaLists ? Amazon returned invalid HTTP response code 410
MerchantItemAttributes ? Amazon returned invalid HTTP response code 410
OfferFull ASIN
OfferSummary
Offers
商品の価格や在庫数などの情報 (OfferSummary)、各社の価格や在庫状況 (Offers) を取得できます。"OffersFull" の場合は "Offers" と比べて、[Offer]->[Merchant] の中に [Name] が追加されるようでした。
OfferListings ASIN
Offers
各社の価格や在庫状況 (Offers) を取得できます。
OfferSummary ASIN
OfferSummary
商品の価格や在庫数などの情報 (OfferSummary) を取得できます。
Offers ASIN
OfferSummary
Offers
商品の価格や在庫数などの情報 (OfferSummary)、各社の価格や在庫状況 (Offers) を取得できます。"OffersFull" の場合は "Offers" と比べて、[Offer]->[Merchant] の中に [Name] が追加されるようでした。
PromotionDetails ? Amazon returned invalid HTTP response code 410
PromotionSummary ? どのような情報が追加されるかどうかわかりませんでした。
使用の際は "Offers", "OfferFull", "OfferListings", "Large" のどれかと合わせて指定する必要があるようです。
PromotionalTag ASIN ?
RelatedItems ASIN
RelatedItems
音楽 CD 等の場合で、"RelationshipType" オプションと併せて使用することで、関連する商品の ASIN を取得することができるようです。関連する商品がない場合には <RelatedItems> は取得されません。
Request ASIN ?
Reviews ASIN ?
SalesRank ASIN
SalesRank
商品の売り上げランキング (SalesRank) を取得できます。
SearchBins ? ?
SearchInside ? ?
ShippingCharges ? どのような情報が追加されるかどうかわかりませんでした。
使用の際は "Offers", "OfferFull", "OfferListings", "Large" のどれかと合わせて指定する必要があるようです。
ShippingOptions ? AWS.NotAuthorized:The identity contained in the request is not authorized to use this ${param-name}
Similarities ASIN
SimilarProducts
"この商品を買った人はこんな商品も買っています" の一覧 (SimilarProducts) を取得できます。
Subjects ? Amazon returned invalid HTTP response code 410
Tags ? Amazon returned invalid HTTP response code 410
TagsSummary ? Amazon returned invalid HTTP response code 410
Tracks ASIN
Tracks
音楽 CD などの場合に、その CD に収録されているトラック情報 (曲番と曲名) を取得できます。
VariationImages ASIN ?
VariationMatrix ASIN ?
VariationMinimum ? Amazon returned invalid HTTP response code 410
VariationOffers ASIN ?
VariationSummary ASIN ?
Variations ASIN ?
"US" リージョンでのみ利用可能のようです。

これらの項目を、カンマ区切りの文字列で、複数指定することが可能です。

もしここを何も指定しなかった場合は、"Small" が設定されているのと同じように動作するようでした。

RelationshipType

"ResponseGroup" オプションで "RelatedItems" を指定する場合には、合わせて "RelationShipType" オプションも指定する必要があるようです。

このオプションは、次の選択肢の中から選んで設定することができるようでした。

AuthorityTitle  
DigitalMusicArranger  
DigitalMusicComposer  
DigitalMusicConductor  
DigitalMusicEnsemble  
DigitalMusicLyricist  
DigitalMusicPerformer  
DigitalMusicPrimaryArtist  
DigitalMusicProducer  
DigitalMusicRemixer  
DigitalMusicSongWriter  
Episode  
Season  
Tracks  

これらの詳細な意味については調べていませんが、音楽 CD に関する作曲者や編曲者などといった感じで、関連する商品を見つけて行くのに使用することができるのではないかと思います。

 

ページ指定

中には複数ページに分けて取得しなければならないものもあるようです。

そのページ番号を指定するために、次のようなオプションも用意されているようでした。

OfferPage 販売者の情報は 10 個ずつを 1 ページとして扱うようです。
RelatedItemPage 関連する商品の情報は、いくつかずつを 1 ページとして扱うようです。
ReviewPage レビューに関する情報は 5 個ずつを 1 ページとして扱うようです。
TagPage  
VaridationPage  

これらのオプションにページ番号を指定することで、任意のページを取得することができるようです。

なお、これらの情報が何ページの情報を持っているかは、"ItemLookup" で得られた結果から判断できるようでした。たとえば "OfferPage" の場合は <Offers> で得られた <TotalOffers> や <TotalOfferPages> から、全体の数やページ数を確認することが可能です。