「Node.jsでAmazonの商品の情報を取得してみたいなー」と思って調べた内容メモ。
初心者向けです。
Amazonの商品 → PA-APIで取得できる
Amazonが提供している「Product Advertising API」(略称:PA-API)というAPIを使えば、商品の情報をプログラム経由で取得できるらしい。
ちなみに「PA-API」にはバージョンがあって、2020年5月11日現在バージョンはv5。
おそらく今後もバージョンアップされていくと思われ、バージョンアップされると前バージョンのPA-APIは使えなくなる可能性があるっぽいです。
現に、以下のようなアナウンスがされています。
2020年3月 31日をもって、PA API 4は完全にサービスを停止します。
サービス停止後は、PA-API 4に対してシステムコールを行ってもAmazonの製品情報を取得することができません。
PA-API → 事前に登録が必要
PA-APIを使うには事前に登録が必要です。
まず、以下のページから「Amazonアソシエイト」のアカウントを作ります。
公式:アソシエイト・セントラル – Product Advertising API
「Amazonアソシエイト」のアカウントはAmazonアカウントとは別物なので、Amazonアカウントを持っていたとして別途作成する必要があります。(しかしAmazonアカウントと連携することも可能っぽい・・?)
アカウントを作ったら、「認証キー」を作成します。
「認証キー」を作成すると
- アクセスキー(
AKIAJOSAFMSFHXB4ENX
みたいな文字の羅列) - シークレットキー(
bs5tb4r5GH8b4s6tr4vb6XF489sthn4rLAthbQVw
みたいな文字の羅列)
の2つが入手できるのでコレをメモしておきます。
アクセスキーのほうは管理画面からいつでも確認することができますが、シークレットキーの方はキーを作成したときにしか表示されないので、必ずメモしておきましょう。
SDKを使えば → PA-APIを簡単に使える
PA-APIを使うには、それなりに面倒なコードをガリガリ書かないといけないらしいんですが
- PHP
- JAVA
- Node.js
- Python
という4つのプログラミング言語に限っては、Amazon様がじきじきに公式のSDK(簡単に使えるようにするためのライブラリみたいなもの)を用意してくださっています。
なのでこれらの言語にかぎっては、SDKを使えば数行で商品情報を取得できたりします。
Node.js用SDKのインストール方法
公式ページから、Node.js用のSDK(paapi5-nodejs-sdkという名前です)をzipでダウンロードできますが
公式からダウンロードしなくても、CUI上で
npm -i paapi5-nodejs-sdk
という風にタイプすれば、npmから「paapi5-nodejs-sdk」をインストールできます。(Amazon公式でダウンロードできるzipと内容は同じみたいです。)
というわけで上のコマンドを打つだけでインストール完了です!Amazon様ありがとうございます!
Node.js用SDKの使い方
使い方は、SDKの中に入っている
sampleGetBrowseNodesApi.js
sampleGetItemsApi.js
sampleGetVariationsApi.js
sampleSearchItemsApi.js
という4つのサンプルコードを見たほうが早いです。
(npm経由でインストールした場合でも、node_modules
→paapi5-nodejs-sdk
フォルダの中に入ってます)
PA-APIには
- GetBrowseNode関数:
→指定したノードID(ノード=Amazonのカテゴリ番号みたいなもの)の親ノード(Ancestor)や子ノード(Children)を取得できる関数。
(例えば「71649051」は「ワイン」のノードなわけですが、「71649051」を指定すると、- 親ノード=酒
- 子ノード=赤ワイン、白ワイン、ロゼワイン、シャンパン・・・
みたいな感じで取得できたりする)
- GetItem関数:
→指定したASINの商品情報を取得する関数。
(例えば「B017SIIRKQ」みたいに指定すれば、「B017SIIRKQ」の価格を持ってこれたりする)
- GetVariations関数:
→指定したASINのバリエーション情報を取得する関数。
(例えば「B017SIIRKQ」が服だとして、「B017SIIRKQ」を指定すると「L」「M」などのサイズ違いの商品や、「黒」「白」「青」みたいな色違いの商品を取得できる…みたいな感じっぽい)
- SearchItems関数:
→指定したノードIDからキーワードを含む商品を取得できる関数。
(これはわかりますよね・・)
という4つの関数が用意されていて、基本的に商品情報を取得するにはこの4つの関数を使うらしいのですが(というかこの4つの関数しか使わないっぽいのですが)、
この4つの関数のサンプルコードが↑の4つファイルというわけです。
なので、この4つのサンプルコードさえ見れば、使い方をほぼマスターできたようなものなのです!おそらく!
書き換えが必要
サンプルコードを使うには、デフォルトの状態から一部書き換えないと動作しません。
まず、以下の部分を
defaultClient.accessKey = '<YOUR ACCESS KEY>'; defaultClient.secretKey = '<YOUR SECRET KEY>';
先ほど取得した
- アクセスキー(
AKIAJOSAFMSFHXB4ENX
みたいな文字の羅列) - シークレットキー(
bs5tb4r5GH8b4s6tr4vb6XF489sthn4rLAthbQVw
みたいな文字の羅列)
にそれぞれ書き換えます。
次に以下の部分を
defaultClient.host = 'webservices.amazon.com'; defaultClient.region = 'us-east-1';
以下のように書き換えます。
defaultClient.host = 'webservices.amazon.co.jp'; defaultClient.region = 'us-west-2';
最後に以下の部分を、自分のアフィリエイトタグに書き換えます。(「○○○-22」みたいなタグです)
searchItemsRequest['PartnerTag'] = '<YOUR PARTNER TAG>';
これで準備完了です。
例:sampleGetItemsApi.jsを使いたい場合
例えばsampleGetItemsApi.js
を使いたい場合は
getItemsRequest['ItemIds'] =['B07TRZ4V1C','B017SIIRKQ'];
に取得したいASINを配列形式で入れて、
node sampleGetItemsApi.js
という風に叩けば、json形式の結果が返ってきます↓。
(もちろん、実行する前にnpm install
が必要です)
おわり
コメント