OFF-SOFT.net

ウェブやソフトウェアに関するサポート&情報サイトです。サイト構築からソフトウェアの作成、利用まであなたの助けになるかも・・・・しれません。たぶん・・。

PHPで価格.com Web APIを使う

公開日| 2009年10月14日 | コメントはまだありません。


概要:

今回は、価格.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を取得する必要があります。

Web API ID(APIアクセスキー) を取得、確認します。

  1. http://apiblog.kakaku.com/へアクセスします。

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


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


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

直接URLを入力して、検索してみましょう。

価格.com Web APIは、URLに操作パラメータを指定し、アクセスすることでXMLの情報を返信してくれます。
そのため、WEBブラウザで、直接URLアドレスを指定すれば確かめることができます。

では、このページを使って、URLコードを作って、試してみましょう。

  1. 価格.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ブラウザに直接入力してみましょう。


  2. 以下のような返信情報(XML情報が)が表示されるとおもいます。


    このような画面が表示されればOKです。

PHPの動作環境を確認しましょう。

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のサンプルソースを使って、試してみましょう。

以下は、簡単なソフトウェアの検索を行うための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

以下のような画面が表示されるはずです。


先の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を参照してください。

簡単な説明でしたが、こんな感じで価格.comの検索を行うことができます。
少しのPHPの知識があれば、自分用の価格.comランキング表などを作成できます。

今回は、わかりやすいように、XMLのベタ出力で作成してみました。
また、自分で、いろいろと触ってみると、理解も深まると思います。一度、試されてみてはいかがでしょうか。
(以下に表示される本の紹介は、この価格.com Web APIを使って検索された結果を表示しています。)



ブックマークへ追加: はてなdel.icio.usLivedoor ClipYahoo!FC2Nifty ClipPOOKMARK. AirlinesBuzzurl(バザール)Choixnewsing

Trackback URL

このコメントは管理人から承認された後、表示されます。


コメント

コメントをどうぞ











タグクラウド

リンク

このサイトは?

ウェブやソフトウェアに関するサポート&情報サイトです。サイト構築からソフトウェアの作成、利用まであなたの助けになるかも・・・・しれません。たぶん・・。

ブックマークへ追加

はてなdel.icio.usLivedoor ClipYahoo!FC2Nifty ClipPOOKMARK. AirlinesBuzzurl(バザール)Choixnewsing