Amazonのアフィリエイト商品情報をASINから取得するプログラムをNode.js(javascript)で書いてみました。今回は、Node.jsからアマゾンのURLを取得していく方法を解説します。ASINとは、アマゾンが扱う商品識別用の10桁のコードのことで、Amazonで商品ページURLから確認する事ができます。
URLコードを取得するには、APIをNode.jsやPHP、JAVAなどのプログラム言語から実行します。APIは、PA-API v5.0(Product Advertising API)と呼ばれており、従来使われていたPA-API v4からv5へ移行することになっています。移行期日は2020年3月となっており、それ以降はPA-API v4.0の使用ができません。
今回はその様な背景から、こちらのサイトでも新しいAPIへ切り替えを行ってみました。
目次
PA-API v5.0とNode.jsでAmazonの商品コードを取得する
Node.jsでAmazonのASINをもとに商品情報を取得するには、下記のコードで可能になります。
amazon-resolve.js1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
| const ProductAdvertisingAPIv1 = require('paapi5-nodejs-sdk') const defaultClient = ProductAdvertisingAPIv1.ApiClient.instance const api = new ProductAdvertisingAPIv1.DefaultApi() const getItemsRequest = new ProductAdvertisingAPIv1.GetItemsRequest()
defaultClient.accessKey = '<Amazonアソシエイトで取得したAPIアクセス・キー(後述)>' defaultClient.secretKey = '<Amazonアソシエイトで取得したAPIシークレット・キー(後述)>' defaultClient.host = 'webservices.amazon.co.jp' defaultClient.region = 'us-west-2' getItemsRequest['PartnerTag'] = '<Amazonアソシエイトで使うID>' getItemsRequest['PartnerType'] = 'Associates'
const ASIN = ['B01NCM2AXX']
getItemsRequest['Resources'] = ['ItemInfo.Title','Images.Primary.Large','ItemInfo.Features']
getItemsRequest['ItemIds'] = ASIN api.getItems(getItemsRequest , (error, data, response) => { if (error) { console.log('PA-API 5の呼び出しエラー') console.log('Printing Full Error Object:\n' + JSON.stringify(error, null, 1)) console.log('Status Code: ' + error['status']) if (error['response'] !== undefined && error['response']['text'] !== undefined) { console.log('Error Object: ' + JSON.stringify(error['response']['text'], null, 1)) } } else { let res = ProductAdvertisingAPIv1.GetItemsResponse.constructFromObject(data) console.log('Complete Response: \n' + JSON.stringify(res, null, 1)) } })
|
PA-API 5向けのnode.jsパッケージを使用する
今回はProduct Advertising APIのNode.jsクライアントであるpaapi5-nodejs-sdkをnpmパッケージとしてインストールしておきます。
bash1
| $ npm install --save paapi5-nodejs-sdk
|
paapi5-nodejs-sdk
をインストールすると分かるのですが、幾つかの利用シーンを想定したサンプルコードが入っています。そちらのコードを参考にするのもおすすめです。
ポイントとしては、ホストとリージョンをサンプルコードのようにwebservices.amazon.co.jp
とus-west-2
に指定しておく事。npmパッケージに入っている、サンプルコードのように海外のホストを指定すると次のようなTooManyRequests
エラーとなります。
bash1 2
| TooManyRequests The request was denied due to request throttling. Please verify the number of requests made per second to the Amazon Product Advertising API.
|
また、PA-API v4.0の解説時に紹介していたnpmパッケージapac
は、新しいPA-API v5では非対応になっています。新しいものを使用しましょう。
Amazonアソシエイトでアクセスキーとシークレットキーを取得する
また、上記で解説したコードではアクセスキーとシークレットキーが必要です。予めAmazonアフィリエイトプログラムのツール
メニューにあるProduct Advertising APIからクレデンシャル(アクセスキーとシークレットキー)を取得しておいてください。
Product Advertising APIの画面からクレデンシャルを取得する ©
細かい規約はこちらの通りです。
Amazonアフィリエイトプログラム
Amazon.co.jp Product Advertising API ライセンス契約
PA-API5とNode.jsでAmazonの商品情報を取得した結果例
先程のコードを実行すると次のような結果になります。
bash1
| $ node amazon-resolve.js
|
試しにこちらの商品の情報を取得してみました。
結果はこちらです。
Node.jsでAmazonの商品情報を取得した例(※PA-API v4.0の使用時の結果例です) ©
アマゾンで取得した商品情報やURLを整形する
APIから返ってくる値を見てみると、以下の要素が使えそうです。
item.ItemInfo.Title.DisplayValue
商品名
item.ItemInfo.Features.DisplayValues
商品の説明文
item.DetailPageURL
Amazonのアフィリエイト商品リンクURL
item.Images.Primary.Large.URL
Amazonの商品画像URL(<img src="">
)に利用できる
item.Images.Primary.Large.Width
Amazonの商品画像の高さ(Pixcel)
item.Images.Primary.Large.Height
Amazonの商品画像の幅(Pixcel)
あとは、こちらをお好みでHTML整形したり、返ってくるJSONを保存すれば、BabyLinkやRinkerのような埋め込みHTMLコードが作れます。
amazon-resolve.js1 2 3 4 5 6 7 8
| let item = res.ItemsResult.Items[0] console.log('タイトル: \n', item.ItemInfo.Features.DisplayValues) console.log('説明: \n', item.ItemInfo.Features.DisplayValues) console.log('URL: \n', item.DetailPageURL) console.log('画像 URL: \n', item.Images.Primary.Large.URL) console.log('画像 幅: \n', item.Images.Primary.Large.Width) console.log('画像 高さ: \n', item.Images.Primary.Large.Height)
|
ということで、今回はNode.jsでアマゾンの商品情報を取得する方法を備忘録として解説しました。