前回の続き。
5000円占いのAmazon商品情報のクローラはnode.jsで書きました。なぜnode.jsを選択したのかというと、JavaScriptが好きだからです。
AmazonのProduct 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はわりと簡単に使えて楽しいので、みんなもやってみると良いよ!