« 民主党って、ほんとバカ | メイン | IMFの指摘など気にせず突き進め »

2012年7月19日

Amazonランキング

Amazon APIを使って商品情報を取得する際にOperationのパラメータを「ItemSearch」、Sortのパラメータを「salesrank」に指定すると、Amazonでの売り上げ順にデータが取得できる・・・はずなのですが、「salesrank」を指定して受け取ったデータは、Amazonのホームページで閲覧できるAmazonランキングの順位とまったく違う並び方で、ResponseGroupのパラメータに「SalesRank」を入れると順位を示す数値が取得できるのですが、これを見ると取得した商品情報の並び方がバラバラだということが分かります。

何故並び順が違うのかググってみましたが明確な答えは見つからず、この並び順の違いは数年前から全く変わっていないそうなので、これはもうAmazon APIの仕様ということで皆さんスルーしているみたいです。

しかし、Amazonから情報を取得して商品情報を表示しているサイトではAmazonと同じ並び方をしているサイトもあるので、別の方法で順位が取得できるはずと調べてみると、Operationのパラメータを「ItemSearch」ではなく「BrowseNodeLookup」にし、ResponseGroupのパラメータを「TopSellers」にして取得したいジャンルのBrowseNodeIdを送ることで上位10件のデータが取得できることが判明。

早速テストスクリプトを作成してAmazonから情報を取ってみると、この方法で取得できるのはASINやタイトルなど一部の情報だけで、表紙画像の情報などは一切無しorz

ということで、ASINを取得したらそのASINを使って再度Amazonに接続し、ResponseGroupのパラメータを「ItemLookup」に、ResponseGroupのパラメータを「ItemAttributes,Images」にすることで必要な情報を取得する方法でAmazonのホームページと同じ順位の情報を、こちらのデータベースへ取得することが可能となりました。

Sortのパラメータを「salesrank」にして取得するデータもそれほど違いは無いのですが、気になると直さずにはいられなくなってしまったということで、もし「salesrank」の並び順が気になった人は「TopSellers」を試してみてください。

投稿者 kenji : 2012年7月19日 16:36


トラックバック

このエントリーのトラックバックURL:
http://kensbar.net/mt/mt-tb.cgi/3881