« [ココログ] カウンターを追加してみる。 | トップページ | !!祝!! かぐらスキー場 ゴンドラコースオープン(2004/12/11) »

[茨の道] AMAZONのアフィリエートという単純なことをWebサービスをつかって難しくおこなってみる(2004/12/05)

AMAZONのアフィリエートという単純なことを、極限まで面倒な方法でやってみよう。


Amazon Hacks 世界最大のショッピングサイト完全活用テクニック100選に書かれているWebサービスは、ECS3.0の時代のことで、ちょっと古くなってきている。そこで、ためしながら、情報をUpdateしつつ、日本語版でどうなるかためしていってみよう。

http://www.goodpic.com/mt/archives/000479.html G-Toolの作者さんのページを参考にしつつ、Version4でなにが変わったかを中心にしらべていこう(あとで知ったのだが、GoodPicsさんはhttp://www.goodpic.com/mt/archives2/2004/10/amazon_ecs_401.htmlここにUpdate情報を載せてました。先にググルべきだった)

http://www.amazon.com/gp/aws/sdk/ ドキュメントによれば、

  • 検索がもっとすごくなったらしい
  • 取り出せる情報もすごくなったらしい
  • カートなんかの操作もバリバリできるようになったらしい
  • エラーコードなどが日本語にも対応したらしい
  • エラーがでるととってもわかりやすいエラーが表示されるらしい

REST方式によるデータ取得

XMLデータをREST(GET方式)で取得してみる。

英語サイト http://webservices.amazon.com/onca/xml
日本語サイト http://webservices.amazon.co.jp/onca/xml

に対して、以下のパラメタを指定すればいいらしい。ECS3.0の場合は、パラメータが p とか tag とかの省略形だったがやはりスペルアウトするのが最近の流れなのだろう。

Service AWSECommerceService
SubscriptionId サブスクリプションID(旧デベロッパトークンに相当:デベロッパ登録するともらえる)
AssociateTag アソシエートタグ
Operation ItemLookup
ItemId ASIN番号
ResponseGroup Mediumなどの回答するデータセット

ResponseGroupは , (カンマ)で区切ることでどんどん組あわせることができて必要な情報だけダウンロードすることが可能になっている。

実験

まずは、とりあえず、ASINがわかっている商品の詳細情報を表示してみよう。
お題は例によって、Amazon Hacks 世界最大のショッピングサイト完全活用テクニック100選を使う。

基本情報の取得(Medium)

Amazon HacksのASINは、4873111811なので ItemIdにこの値をセットして、OperationにItemLookupを設定して早速リンクをつくってみよう(下のURLは長いが1行のURL)。
http://webservices.amazon.co.jp/onca/xml?Service=AWSECommerceService&SubscriptionId=0YBK2DWWWADG5TZ5EN82&AssociateTag=projectdevil-22&Operation=ItemLookup&ItemId=4873111811&ResponseGroup=Medium

IEならばXML表示機能でなんとなーく意味がわかるはずだ。

ぱっと見た感じでわかることは、

  • RequestProcessingTime が1回目は0.x秒ぐらいだが、2回目からは0.0x秒単位でやたら早い(キャッシュされている)
  • 画像がUSのサイト(http://images.amazon.com/)からダウンロードするようになっている。

あたりに気がついた。イメージのダウンロード先変更は、サーバを統合して強化する予定なのだろうか?

エラーの場合

エラーがわかりやすくなったとリリース文にあるので今度はエラーをためしてみる。ASIN 4873111811を間違えてみよう。ASINにDAME3111811を設定してリクエストをつくってみる。

http://webservices.amazon.co.jp/onca/xml?Service=AWSECommerceService&SubscriptionId=0YBK2DWWWADG5TZ5EN82&AssociateTag=projectdevil-22&Operation=ItemLookup&ItemId=DAME3111811&ResponseGroup=Medium

- <Error>
<Code>AWS.InvalidParameterValue</Code>
<Message>DAME3111811は、ItemIdの値として無効です。値を変更してから、再度リクエストを実行してください。</Message>
</Error>
と表示されただろうか?「お探しのものが見つかりません」のほうが親切のように思えるが、ItemIdのInvalidParameterというのは登録されていないASINだけということでいいのかな?

いろいろな情報の取得

基本のやり方はわかったので、早速いろいろ情報を取り出してみよう。
ResponseGroupに設定できるパラメータは以下の通り。
ResponseGroupに設定する値 返却されるクラス リクエスト例
Request リクエストそのもの
ItemIds アイテムID(ASIN)
Small 最小リスト
Medium 平均的なリスト
Large 最大のリスト
OfferFull 値段や発送条件すべて
Offers 値段や発送条件
OfferSummary 値段や発送条件(サマリ)
Variations 価格リスト(中古品を含む)基本情報
VariationMinimum 価格リスト(中古品を含む)最小情報
VariationSummary 中古品の数(サマリ)
ItemAttributes サイズや重さなどの商品特徴
Tracks CDの場合のトラック(曲目)
Accessories アクセサリ(周辺品)の紹介
EditorialReview 出版社による書籍情報(内容サマリ)
SalesRank 売り上げランク
BrowseNodes 商品が所属する商品ノード(カテゴリ)
Images イメージリンク
Similarities 類似品の紹介
Reviews カストマーレビュー
ListmaniaLists リストマニア一覧

出力結果の利用

出力で得られたものはXMLであるので、パーサなどをつかってデータ処理する。

内容については、おおよそ名前と出力から推測できるが、詳細は、マニュアルの http://www.amazon.com/gp/aws/sdk/main.html?s=AWSEcommerceService&v=4-0&p=PgDatamodelProduct このあたりに書いてあるので参照する。

XSLTの利用

XSLTによる変換も可能だ。リクエストのパラメータに Style パラメータとしてXSLTスタイルシートを加えるとよい(実験は後日にしよう)。

|

« [ココログ] カウンターを追加してみる。 | トップページ | !!祝!! かぐらスキー場 ゴンドラコースオープン(2004/12/11) »

コメント

コメントを書く



(ウェブ上には掲載しません)


コメントは記事投稿者が公開するまで表示されません。



トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/48992/2156619

この記事へのトラックバック一覧です: [茨の道] AMAZONのアフィリエートという単純なことをWebサービスをつかって難しくおこなってみる(2004/12/05):

« [ココログ] カウンターを追加してみる。 | トップページ | !!祝!! かぐらスキー場 ゴンドラコースオープン(2004/12/11) »