蟻地獄

Twitterに書ききれない長めの文とか書くよ

Node.jsでAmazon Product Advertising APIを叩く話

前回の続き。

5000円占いAmazon商品情報のクローラはnode.jsで書きました。なぜnode.jsを選択したのかというと、JavaScriptが好きだからです。

AmazonProduct Advertising APIを叩くのには、node-apacというモジュールを使用しました。

使い方は簡単。まずはnpmでインストール。まだstable versionが無いので、@latestを付ける必要があります。

npm install apac@latest

require('apac')でインポートして、OperationHelperのインスタンスを生成。

var OperationHelper = require('apac').OperationHelper;

var opHelper = new OperationHelper({
	endPoint:	'ecs.amazonaws.jp', // APIのエンドポイント。日本の場合はecs.amazonaws.jp
	awsId:		'XXXXXXXXXXXXXXXXXXXX', // 自分のAccess Key ID
	awsSecret:	'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx', // 自分のSecret Access Key
	assocId:	'xxxxxx-22' // 自分のアソシエイトID
});

例として、100円〜5000円の和書を売り上げ順に表示するのはこんな感じ。

opHelper.execute('ItemSearch'/* オペレーション名 */, {
	// リクエストパラメータ。Product Advertising APIのパラメータ名をそのまま書けばOK
	'SearchIndex': 'Books',
	'BrowseNode': 465610,
	'MinimumPrice': 100,
	'MaximumPrice': 5000,
	'ResponseGroup': 'Small,OfferSummary',
	'Sort': 'salesrank'
}, function(error, results){
	if(error){
		console.error(error);
	}else{
		// resultsはProduct Advertising APIのレスポンスボディをxml2jsしただけのもの
		var items = results.Items.Item;
		for(var i = 0; i < items.length; ++i){
			console.log(
				'ASIN:' + items[i].ASIN
				+ '\tTitle:' + items[i].ItemAttributes.Title
			);
		}
	}
});

前回も書きましたが、Product Advertising APIには1時間2000リクエストまでというかなり厳しい回数制限があります。また、リクエスト同士の間隔が短すぎても503が返されるようなので、あまり激しく叩いてはいけません。愛をもって優しく叩きましょう。

そんなわけで、Product Advertising APIはわりと簡単に使えて楽しいので、みんなもやってみると良いよ!