⑤API実践-商品-PHP



APIをPHPでプログラムする場合のサンプルを示します。★番号★の部分にAamzonから取得したKey等を入れればAmazon日本から情報取得できます。(取得方法は“④API実践-はじめに(登録方法含む)”で投稿)

【使い方】
①フォルダを作成し(今回は”C:\sampleAmazonApi”)以下のPHPプログラムを全てコピーし、メモ帳で新規にファイルを開き、ファイル名を”sample1.php”等の名前で保存。
②Windowsマーク+”r”コマンドによりコマンドプロンプトを開き、フォルダに移動する”cd C:\sampleAmazonApi”を入力しフォルダを移動
③コマンドプロンプト上で、”c:\xampp\php\php sample1.php”と入力し実行する。(PHPが”c:\xampp\php\php”にインストールされていないといけません。XAMPPインストールは別記事で投稿)
1
【少し解説】
本プログラムは全カテゴリーの中から、”GUNDAM”というキーワードを検索し1ページ目を取得する内容になっています。

$params[‘ItemPage’] = 1;
$params[‘Keywords’] = ‘GUNDAM’;

を変更すればページ数は変更できますが、5ページまでしか表示できません。6にしたらAmazonでエラーになり応答はありません。ですので、キーワード検索を行いページ数を1~5までインクリすれば10×5の50件のみ表示できます。キーワードを細かくして50件ずつ取得すれば、一時間で最大2万件(2000アクセス×10商品)のデータを取得することができます。ただ、そんなにうまくキーワードを指定できないでしょうから個人的には困難だと思います。

■キーワードで検索時■のところをコメントアウト”//”にして、■ASIN番号で検索時■のコメントアウトを外せばASIN番号での検索が可能です。ASINは以下のように固定で”ラジコンヘリのナノファルコン”(=”B00CPDCZWG”)になっていますので、ここを任意のASIN番号に順次変える事が出来れば、情報を取得できます。ASIN番号を順次変更すれば1時間に2000件のデータを取得することが可能です。以下の’B00CPDCZWG’を任意の番号に変更してください。

$params[‘ItemId’]=’B00CPDCZWG’;

ただし、ASIN番号を事前に把握しないといけないため、Webアクセスなどで取得する必要があります。

プログラムのここについては見てもらえば難しくないので理解できるとは思いますが、少しだけ補足します。
まず、リクエスト種別は
$params[‘Operation’]=’ItemSearch’;
を変更してください。例えば、’ItemSearch’を’ItemLookup’に変更するとASIN番号などから商品情報を取得できます。(先に述べたようにコメントアウトすれば出来ます。)
取得したい情報を変更するには、レスポンスグループを変更してください
$params[‘ResponseGroup’]=’Large’;
の’Large’を変更すれば使えます。詳細はAPIの技術解説を見てください。

35行目まではパラメータの設定ですので、決められた値を利用すれば良いです。7~9行目はAmazonにアクセスするためのIDですので、Amazonから取得する必要があります。(取得方法は別記事で投稿)
19行目は取得情報を変更する場合に変更する必要があります。例えば21行目とコメントアウト”//”を入れ替える必要がありますが、Largeが一番多くの処理を取得することができますので、取得情報を絞りたい場合に変更ということになると思います。AmazonAPIについてはTATSUO IKURA氏のAmazon Web サービス入門(Product Advertising API)に詳しく書かれています。
37~52行目までは以下に表示しているURL(HTML―Request)を作成するためのプログラムです。URLの&でつながる送信パラメータを作成しています。55行目でHTMLアクセスし情報を取得しています。58行目で取り込んだ値をXMLとして解析し値として取得する処理をしています。60~81行目は取得した商品情報を順次取り出し変数に格納し、84~88行目で一部の値のみ表示するようにしています。最後に、93~95行目はURLエンコード(日本語などをURLで送信するための文字コード変換)するためのサブ関数で繰り返し行う処理をサブ関数として分けています。

上記のPHPは以下のURL(HTML―Request)を送信して返答を得る(情報を得る)ためのプログラムです。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です