Amazon Web Service
Amazon Web Service(AWS)を使うと、Amazonで検索した商品データを自分のサイトに載せる事ができます。商品データはXML形式で返されますので、これをPHPで解析してHTMLに成型します。
- このサービスを利用するには登録が必要です。
商品検索方法
http://xml-jp.amznxslt.com/onca/xml3?local=jp
このアドレスに検索用のパラメータを連結させて問い合わせします。
| オプションパラメータ | ||
|---|---|---|
| f= | XSLTを適用する場合はそのURL f=xmlとするとそのままXMLを取得できます。 |
|
| locale= | 国コード 日本はjp | |
| type= | lite 簡易版 heavy 完全版 |
|
| t= | アソシエイトID | |
| dev-t= | Subscription Id (デベロッパトークン) | |
| page= | 結果が複数ページに渡る場合のページ数 | |
| mode= | 検索する商品のジャンル | |
| 和書 | books-jp | |
| 洋書 | books-us | |
| 音楽 | music-jp | |
| 音楽クラシック | classical-jp | |
| DVD | dvd-jp | |
| ビデオ | vhs-jp | |
| エレクトロニクス | electronics-jp | |
| ソフトウェア | software-jp | |
| ゲーム | videogames-jp | |
| ASINSearch= | 商品固有のASIN(Amazon Standard Item Number)コード、もしくは書籍に付いているISBNコードを指定。 カンマ(,)で区切って複数指定可能 | |
| KeywordSearch= | 検索単語 | |
これ以外にも詳細な検索が行えるパラメータがいくつかあります。
XMLを解析する
アマゾンから返ってきたXMLは、PHP標準のDOM関数を使って自力で解析しても良いのですが、構造が複雑になると少々大変です。そこで、PEARのXML_Serializerパッケージに含まれているXML_Unserializerクラスを使います。これを使えば、XMLテキストを瞬時に連想配列にしてくれますので、後で好きな様にHTMLに加工できます。
(注) PEARがない場合、まずPEARを導入して下さい。
http://pear.php.net/package/XML_Serializer
PHP:
-
// XML_Unserializerクラスの読み込み
-
require 'XML/Unserializer.php';
-
-
class AWS_QueryString {
-
var $_params;
-
-
function AWS_QueryString($token, $assoc, $type = 'heavy', $format = 'xml',
-
$locale = 'jp') {
-
// 基本データだけ入れておく
-
$this->add('dev-t', $token);
-
$this->add('t', $assoc);
-
$this->add('locale', $locale);
-
$this->add('f', $format);
-
$this->add('type', $type);
-
}
-
function add($name, $value) {
-
$this->_params[$name] = $value;
-
}
-
function get($key) {
-
return $this->_params[$key];
-
}
-
return NULL;
-
}
-
function toString() {
-
$str = '';
-
foreach($this->_params as $key => $value) {
-
if($value) $tmp[] = "$key=$value";
-
}
-
}
-
$str = "http://xml-jp.amznxslt.com/onca/xml3?$str";
-
return $str;
-
}
-
}
-
-
class AWS_ProductData {
-
var $_products;
-
-
function AWS_ProductData($xmlsrc, $encoding='SJIS') {
-
-
$unserializer =& new XML_Unserializer();
-
// 解析に属性も含める
-
$unserializer->setOption('parseAttributes', TRUE);
-
$success = $unserializer->unserialize($line);
-
$this->_products = $unserializer->getUnserializedData();
-
}
-
function getProducts() {
-
return $this->_products;
-
}
-
}
-
-
// アマゾン・リクエストID(デベロッパトークン)
-
// アマゾン・アソシエイトID
-
-
$qs =& new AWS_QueryString(AWS_TOKEN, AWS_ASSOC);
-
$qs->add('mode', 'music-jp');
-
$qs->add('KeywordSearch', '宇多田ヒカル');
-
$url = $qs->toString();
-
$obj =& new AWS_ProductData($url);
-
$products = $obj->getProducts();
-
-
print '<pre>';
-
print '</pre>';
商品リンク
http://www.amazon.co.jp/exec/obidos/ASIN/xxxxxxxxxx/xxxxx-22/ http://www.amazon.co.jp/exec/obidos/ASIN/xxxxxxxxxx/xxxxx-22/ref=nosim/
通常、商品が売れた場合の紹介料は3%ですが、下のようにref=nosimを付けたアドレスにリンクしておくと、そのページで購入された場合に限り5%になりますので、一応付けておきましょう。