
概要:
今回は、価格.com のWeb APIを使って、簡単な検索結果を表示したいと思います。
価格.com Web APIは、以前、記事にしました
「PHPでYahoo! Web APIを使う」のWeb API
に考え方がそっくりです。
価格.comには、アフィリエイトがありませんから、そのパラメータがないぐらいで、あとは、ほとんど考え方が同じです。
同じように、出力結果のXML情報を解析することで、自分が表示したい情報を取得し、HTML情報へ変換し、出力できます。
このAPIで、最安値を自分のページにいつも表示させることなどが簡単にできてしまうわけです。
では、早速、PHPのサンプルコードを作成して試してみましょう。
参照ページ : http://apiblog.kakaku.com/
価格.com Web APIを利用するためには、まず、以下のIDを取得する必要があります。
- http://apiblog.kakaku.com/へアクセスします。

- 左下の"利用申し込み"をクリックして、以下の画面の申込内容を入力します。

入力が完了したら、"上記の規約に同意して登録する"をクリックします。 - 以下のように仮登録のメールが送信された由を通知する画面が表示されます。

仮登録のメールの中に記述sれているURLをアクセスすると、本登録が完了し、Web API ID(APIアクセスキー) を取得できます。
以下の"APIアクセスキーが発行されました"の下部分をコピーしておきましょう。

価格.com Web APIは、URLに操作パラメータを指定し、アクセスすることでXMLの情報を返信してくれます。
そのため、WEBブラウザで、直接URLアドレスを指定すれば確かめることができます。
では、このページを使って、URLコードを作って、試してみましょう。
- 価格.comで何かを検索するためのサンプルURLが、http://apiblog.kakaku.com/KakakuItemSearchV1.0.htmlにあります。
http://api.kakaku.com/WebAPI/ItemSearch/Ver1.0/ItemSearch.aspx?^ Keyword=%e3%82%a2%e3%82%af%e3%82%aa%e3%82%b9&resultset=medium^ &categorygroup=kaden&pagenum=1&minprice=100000&maxprice=150000&ApiKey=<your application id>
^:次行へ続くという意味
このサンプルURLの<your application id> : に先に取得した、Web API ID(APIアクセスキー)を指定して、Webブラウザに直接入力してみましょう。
- 以下のような返信情報(XML情報が)が表示されるとおもいます。

このような画面が表示されればOKです。
PHPが動作可能か確認します。
以下は、Windowsのコマンドプロンプトで確認した例です。
UNIXでも同様のコマンドを入力して確認できます。
1 2 3 4 | C:\> php -v PHP 5.1.2 (cli) (built: Jan 11 2006 16:40:00) Copyright (c) 1997-2006 The PHP Group Zend Engine v2.1.0, Copyright (c) 1998-2006 Zend Technologies |
今回の記事では、バージョンがPHP5以上でなければなりません。
これで準備が整いました。
次に、PHPのサンプルコードを元に、試してみましょう。
以下は、簡単なソフトウェアの検索を行うためのPHPのサンプルソースです。
[sample.php]
1 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 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 | //------------------------------------------------------------------- // Define your id. //------------------------------------------------------------------- // user id information define("ACCESS_KEY_ID" , 'Your KAKAKKU.com Web API id. '); // access url(Jpanan) define("ACCESS_URL" , 'http://api.kakaku.com/WebAPI/ItemSearch/Ver1.0/ItemSearch.aspx'); //------------------------------------------------------------------- //http://api.kakaku.com/WebAPI/ItemSearch/Ver1.0/ProviderSearch.aspx -- プロバイダ検索API //------------------------------------------------------------------- // this function is encode with RFC3986 format. //------------------------------------------------------------------- function urlencode_RFC3986($str) { return str_replace('%7E', '~', rawurlencode($str)); } //------------------------------------------------------------------- // Main routine. //------------------------------------------------------------------- $base_param = 'ApiKey='.ACCESS_KEY_ID; $params = array(); $params['SortOrder'] = 'pricerank'; // price/name/score/sold/affiliate/review_count (+/-) $params['CategoryGroup'] = 'Pc'; // category (pc/software) $params['Keyword'] = 'Windows 7 Microsoft'; // search key ( UTF-8 ) $params['HitNum'] = 10; // result max count. $params['PageNum'] = 1; // start page no $params['Charset'] = 'utf8'; // charactor code $params['ResultSet'] = 'medium'; // result info // sort $param by asc. ksort($params); // create canonical string. $canonical_string = $base_param; foreach ($params as $k => $v) { $canonical_string .= '&'.urlencode_RFC3986($k).'='.urlencode_RFC3986($v); } // create URL strings. $url = ACCESS_URL.'?'.$canonical_string; // service = itemSearch // request to amazon !! $response = file_get_contents($url); // response to strings. $parsed_xml = null; if(isset($response)){ $parsed_xml = simplexml_load_string($response); } $err_count=0; // print out of response. if( $response && isset($parsed_xml) && !isset($parsed_xml-->Error) ){ // total results num. $total_results = $parsed_xml-->NumOfResult; // total results pages. $total_pages = floor(($parsed_xml-->NumOfResult + 9)/10); print("All Result Count:".$total_results." | Pages :".$total_pages ); print("<table>"); foreach($parsed_xml-->Item as $current){ $nerr=0; print("<tr><td><font size='-1'>"); print('<a href="'.$current-->ItemPageUrl.'"><img src="'.$current-->ImageUrl.'" border=0></a><br >'); print('<a href="'.$current-->ItemPageUrl.'">'.$current-->ProductName.'</a><br />'); print('Maker : '.$current-->MakerName.'<br />'); print('<font color=red>Sale : '.$current-->LowestPrice.'</font><br />'); if(isset($current-->PvRanking) && !empty($current-->PvRanking) ){ print('Ranking : '.$current-->PvRanking.'<br />'); } if(isset($current-->TotalScoreAve) && !empty($current-->TotalScoreAve) ){ print('Rate : '.$current-->TotalScoreAve.'<br />'); } if(isset($current-->Comment) && !empty($current-->Comment) ){ print('Spec : '.$current-->Comment.'<br />'); } print("</td></tr>"); } print("</table>"); print('<a href="http://apiblog.kakaku.com/">WEB Services by 価格.com</a>'); } |
もし、そのまま利用する場合は、以下の3項目を設定すれば、"パソコン、周辺機器"のカテゴリ内を、"Windows 7 Microsoft"というキーワードで検索した結果を安値順で取得します。
6行目:あなたのWeb API ID(APIアクセスキー)を設定します。
設定したphpファイルをあなたのWEBサーバ上でアクセスできるところへアップロードします。
WEBブラウザから、アップロードしたphpへアクセスしてみてください。
例えば、WEBサーバのカレントから、kakakuディレクトリの配下へアップロードした場合は、以下のようなURLでアクセスします。
http://www.example.com/kakaku/sample.php
以下のような画面が表示されるはずです。

変更が必要な個所は、以下の行だと思います。
$params['SortOrder'] = 'pricerank'; // price/name/score/sold/affiliate/review_count (+/-)
$params['CategoryGroup'] = 'Pc'; // category (pc/software)
$params['Keyword'] = 'Windows 7 Microsoft'; // search key ( UTF-8 )
$params['HitNum'] = 10; // result max count.
$params['PageNum'] = 1; // start page no
$params['Charset'] = 'utf8'; // charactor code
$params['ResultSet'] = 'medium'; // result info
31行目:'SortOrder'は、検索結果の順番を指定します。ここでは、'sold'=安値順 を指定しています。
pricerank :安い→高い
-pricerank :高い→安い
daterank :発売日順 (新しい→古い)
popularityrank : 人気順
*指定し無い場合は、人気順となります。
並び順の複数指定は、できません。
32行目:'CategoryGroup'は、検索対象のカテゴリ名を指定します。
ここでは、"Pc"の"パソコン、周辺機器"を指定しています。
ここで指定するカテゴリ名は、以下のとおりです。
パソコン関連 Pc
家電 Kaden
カメラ Camera
ゲーム Game
楽器 Gakki
自動車・バイク Kuruma
スポーツ・レジャー Sports
ブランド・腕時計 Brand
ベビー・キッズ Baby
ペット Pet
ビューティー・ヘルス Beauty_Health
上記全て ALL
41行目:'Keyword'は、検索する文字列です。ここでは、"Windows 7 Microsoft"のAND検索を実施しています。
42行目:'HitNum'は、検索結果を最大何個出力するかを指定します。ここでは、最大10個の検索結果を得るように指定しています。
43行目:'PageNum'は、何ページ目の検索結果を出力するかを指定します。ここでは、1ページ目の検索結果を得るように指定しています。
44行目:'Charset'は、検索結果の文字コードを指定します。ここでは、"utf8"=UTF-8を指定しています。
sjis :SHIFT-JIS
utf8 :UTF-8
euc :EUC-JP
43行目:'ResultSet'は、検索結果の情報の種類(量)を指定しています。ここでは、"medium"=デフォルトを指定しています。
mini/medium のいずれかを指定します。
検索条件及び検索結果は、他にもいろいろと指定することができます。詳細は、以下のページを参照してください。
http://apiblog.kakaku.com/KakakuItemSearchV1.0.html
57行目:出力情報のXML情報をパーサにかけて文字列へ変換しています。
また、
98行目:ここは、価格.comの"クレジット表示"です。規約の上で、このような"クレジット表示"を必ず入れないといけません。
詳しくは、 http://apiblog.kakaku.com/credit.htmlを参照してください。
少しのPHPの知識があれば、自分用の価格.comランキング表などを作成できます。
今回は、わかりやすいように、XMLのベタ出力で作成してみました。
また、自分で、いろいろと触ってみると、理解も深まると思います。一度、試されてみてはいかがでしょうか。
(以下に表示される本の紹介は、この価格.com Web APIを使って検索された結果を表示しています。)

価格.comでのWindows 7最安値の表示です。







