楽天オークション商品検索API サンプルコード
楽天オークション商品検索APIのサンプルコードです。
当ホームページでは、PHP5を使用しています。PHP5が使用できない環境の方は、こちらのエックスサーバーをご検討下さい。当ホームページでも使用しているおすすめのサーバーです。
サンプルコード
「プログラミング」というキーワードで、安い順に1件目から30件を取得するサンプルコードです。 サンプルコードの実行結果
検索条件を変えるには、各パラメータを指定して下さい。→ リクエストの作成へ
★★にはデベロッパーIDを、◆◆には、アフィリエイトIDを入れて下さい。
詳しくは、デベロッパーID、アフィリエイトIDを参照下さい。
一部スタイルシートを使用しています。ホームページの本
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html lang="ja">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="Content-Style-Type" content="text/css">
<title>楽天オークション商品検索API サンプル</title>
<style type="text/css">
<!--
img {
border: none;
}
table {
margin: 5px;
border-top: 1px solid gray;
border-left: 1px solid gray;
width: 80%;
}
table td {
padding: 5px;
border-right: 1px solid gray;
border-bottom: 1px solid gray;
text-align: center;
}
.price {
font-weight: bold;
}
//-->
</style>
</head>
<body>
<?php
$hit = '30';
$num = '1';
$word = 'プログラミング';
$base = 'http://api.rakuten.co.jp/rws/1.10/rest?developerId=★★';
$affiliateId = '&affiliateId=◆◆';
$operation = '&operation=AuctionItemSearch&version=2007-12-13';
$keyword = '&keyword=' .urlencode($word);
$hits = '&hits=' .$hit;
$page = '&page=' .$num;
$sort = '&sort=%2bitemPrice';
$file = $base .$affiliateId .$operation .$keyword .$hits .$page .$sort;
$data = file_get_contents($file);
$data = str_replace('auctionItemSearch:AuctionItemSearch',
'auctionitemsearch', $data);
$xml = simplexml_load_string($data);
?>
<table cellspacing="0" cellpadding="0">
<tr>
<td colspan="2">タイトル</td>
<td width="80">現在価格</td>
<td width="40">入札</td>
</tr>
<?php
foreach($xml->Body->auctionitemsearch->Items->Item as $item){
$itemName = $item->itemName;
$itemPrice = $item->itemPrice;
$itemCaption = $item->itemCaption;
$affiliateUrl = $item->affiliateUrl;
$smallImageUrl = $item->smallImageUrl;
$bidCount = $item->bidCount;
print <<< page
<tr>
<td class="image">
<a href="{$affiliateUrl}" target="_blank"><img src="{$smallImageUrl}"</a>
</td>
<td style="text-align:left">
<a href="{$affiliateUrl}" target="_blank">{$itemName}</a>
</td>
<td class="price">{$itemPrice}円</td>
<td>{$bidCount}</td>
</tr>
page;
}
?>
</table>
<!-- Rakuten Web Services Attribution Snippet FROM HERE -->
<a href="http://webservice.rakuten.co.jp/" target="_blank">
Supported by 楽天ウェブサービス</a>
<!-- Rakuten Web Services Attribution Snippet TO HERE -->
</body>
</html>
サンプルコードの説明(PHP部分のみ)
プログラム | 説明 |
---|---|
$hit = '30'; $num = '1'; |
1ページに30件を取得して、その1ページを得るための変数 |
$word = 'プログラミング'; | $word に検索ワード「プログラミング」を代入 |
$base = 'http://api.rakuten.co.jp/rws/1.10/rest?developerId=★★'; | 基本URL+デベロッパーID |
$affiliateId = '&affiliateId=◆◆'; | ◆◆にアフィリエイトidを入れて、アフィリエイトidを指定する |
$operation = '&operation=AuctionItemSearch&version=2007-12-13'; | API名とバージョンの指定 |
$keyword = '&keyword=' .urlencode($word); | キーワードをエンコードしてキーワードクエリを作成する |
$hits = '&hits=' .$hit; | 何件取得するかの指定 今回は、$hitに30を指定したので30件 |
$page = '&page=' .$num; | 何ページ目を取得するかの指定 今回は、$hitに1を指定したので1ページ目 |
$sort = '&sort=%2bitemPrice'; | ソートの指定 今回は安い順 |
$file = $base .$affiliateId .$operation .$keyword .$hits .$page .$sort; | クエリをつなげて、リクエストURLを作成する |
$data = file_get_contents($file); $data =str_replace( 'auctionItemSearch:AuctionItemSearch', 'auctionitemsearch', $data); |
フィールド名に「:」があるとパースできない。したがって、「auctionItemSearch:AuctionItemSearch」を「auctionitemsearch」に変換している。 |
$xml = simplexml_load_string($data); | XMLを$xmlに代入する。 |
foreach($xml->Body->auctionitemsearch-> Items->Item as $item){ |
Itemを変数$itemに代入する。Item分繰り返す。 |
$itemName = $item->itemName;他 | itemNameを$itemNameに代入する。itemPrice以下同様 |
print <<< page ~ page; | XMLから抜き出したデータを表示する |
<!-- Rakuten Web Services Attribution Snippet FROM HERE ---->以下 | クレジット表示(必須) |
フィールド名に「:」があると、パースできません
楽天オークション商品検索APIに限らず、フィールド名に「:」があるとパースすることができません。名前空間とか何とからしいですが・・・。
そこでfile_get_contents()でファイル内容を取得し、str_replace()で「:」のある部分「auctionItemSearch:AuctionItemSearch」を「auctionitemsearch」に置換しています。simplexml_load_stringであるところに注意!
$data = file_get_contents($file); $data = str_replace('auctionItemSearch:AuctionItemSearch', 'auctionitemsearch', $data); $xml = simplexml_load_string($data);