こんにちは、ゆんつです。
Amazonにある商品の情報を取得したいと思った場合。
ブラウザやアプリでならAmazonのサイトにアクセスすることで簡単に情報を取得することができます。
では、PHPを使ってAmazonの商品の情報を取得する場合にはどうすればいいでしょうか?
PHPでAmazonの商品情報を取得する場合。
「Product Advertising API(以下「PA-API」)」を使うことで取得することができます。
PA-APIによる商品情報の取得のコードは以前は結構ややこしいコードを書かなければならなかったようです。
でも現在は「SDK」というものがAmazonで用意されており、それを使うことでPA-APIを使って比較的容易に商品情報を得ることができるようになっています。
今日はSDKを使ってAmazonの商品情報を取得してみたいと思います。
PA-APIの使用に必要なもの
- アクセスキーID
- シークレットキー
- アソシエイトタグ
さらに重要なのはAmazonアソシエイトのアカウントで成果が発生しているかどうかです。
PA-APIは成果が出ているアカウントでしか使えません。
ですので、作りたてで成果の実績がないアカウントではコードを書いても思うように動作しないかもしれません。
SDKを導入する
公式サイトからSDKをダウンロードします。
ダウンロードしたzipファイルを解凍すると以下のようなファイル構成になっています。
すべてのフォルダをコピーしてXammpやVagrantなどの開発環境の作業用フォルダに入れます。
SDKの導入は以上で完了です。
Amazonの商品情報を取得する
早速SDKを使ってAmazonの商品情報を取得してみたいと思います。
今回はAmazonの「ASIN」という記号を使って商品情報を取得してみたいと思います。
paapi5-php-sdk-exampleフォルダを開くと以下のような構成になっています。
この中にSampleという書き出しの4つのファイルがあります。
この4つのファイルには、利用目的に応じてあらかじめPA-APIを利用するためのサンプルコードが記述されています。
利用者はそのサンプルコードの一部を書き換えるだけでPA-APIが使えるようになっています。
今回はASINを利用して商品情報を取得するので「SampleGetItemsApi.php」というファイルを利用します。
「SampleGetItemsApi.php」を開きます。
ファイルを開くと55行目あたりから始まるgetItemsという関数の中に'<YOUR ACCESS KEY>'など、自分の情報を入力する箇所があるのでまずはこれらを書き換えます。
書き換える箇所は以下の通りです。
書き換え箇所 | 書き換え内容 |
<YOUR ACCESS KEY> | Amazonアソシエイトのアクセスキー |
<YOUR SECRET KEY> | Amazonアソシエイトのシークレットキー |
<YOUR PARTNER TAG> | AmazonアソシエイトのトラッキングID |
webservices.amazon.com | webservices.amazon.co.jp |
us-east-1 | us-west-2 |
続いて調べたい商品情報のASINを設定します。
90行目あたりに$itemIdsという配列があり、あらかじめサンプルとして値が記述されています。
この配列の値として設定したASINに関する商品情報が取得されるので、配列の値を調べたい商品のASINに書き換えます。
ここまで設定すれば、あとは実行するだけで商品情報が取得できます。
仮想サーバーなどでこのファイルにアクセスするとブラウザには以下のように表示されます。
上のほうではjson形式で返ってきた情報が表示されており、下のほう(赤枠)ではそれらが見やすく整形されています。
取得する情報をカスタマイズする
デフォルトのsampleコードの状態ではASINやURL、商品名、金額などの情報は返ってきていますが商品画像の情報は返ってきていません。
というように欲しい情報がある場合は96行目あたりの$resoucesという配列に値を追加します。
例えばミディアムサイズの画像が欲しい場合には「GetItemsResource::IMAGESPRIMARYMEDIUM」を追加します。
この状態で実行すると先ほどは無かった画像の情報が取得できます。
どのようなものが$resourcesに設定できるかは「GetItemsResource.php」というファイルのGetItemsResourceクラス内で定数として定義されているので、それを見れば大体わかります。
取得した情報にアクセスする
取得した情報へのアクセスの方法は簡単です。
取得した商品の情報は「$getItemsResponse」という変数に入っています。
$getItemsResponseをvar_dumpで出力してみるとこんな感じになっています。
この情報の構造に従って目的の情報までget○○というメソッドを繋いでいけば、必要な情報にアクセスすることができます。
例えば商品画像のURLを取得したい場合には以下の画像のような流れになります。
これをコードにすると
$getItemsResponse->getItemsResult()
->getItems()[0]
->getImages()
->getPrimary()
->getMedium()
->getURL();
という形になります。
これを利用すれば
$amazon_item_url = $getItemsResponse
->getItemsResult()
->getItems()[0]
->getDetailPageURL();
$amazon_img_path = $getItemsResponse
->getItemsResult()
->getItems()[0]
->getImages()
->getPrimary()
->getMedium()
->getURL();
$html = <<<EOF
<div>
<a href="{$amazon_item_url}">
<img src="{$amazon_img_path}">
</a>
</div>
EOF;
echo $html;
という感じのコードでアフィリエイトリンク付きの画像を表示させたりすることができます。
簡単です
以上がSDKからPA-APIを利用してAmazonの商品情報を取得する方法でした。
SDKのおかげで難しいことはしていないのに商品情報が取得できたのが分かっていただけたかと思います。
SDKに入っているほかのサンプルファイルを利用するとASINだけでなくキーワードなどからAmazonの商品情報を取得できたりするので、興味があればろいろと試してみてください。
それでは、またー。