20120531:食べログWebAPI(1) - 千葉商科大学

PHPのファイルは、UTF-8、BOMなしで保存し、
www.cyaneum.orgのpublic_htmlに置く!
渡辺ゼミ2(2012/05/31)
食べログのWebAPIを使う
政策情報学部
渡辺恭人
[email protected]
メーリングリスト [email protected]
資料
http://www.cuc.ac.jp/rg11/
食べログAPIの利用
• 食べログAPI紹介ページ
– http://tabelog.com/help/api
• 利用申し込みして、APIアクセスキーを入手す
る必要がある
• ガイドラインを良く読み、規約を守る
– 最新の情報を表示する
– クレジット表示をする
– 食べログ店舗詳細ページへのリンクを張る
2
食べログAPI
• APIマニュアル
– http://tabelog.com/help/api_manual/
• レストラン情報取得API
– まずはこれ
• 口コミ取得API
• 店舗画像取得API
3
レストラン情報取得API
• リクエストURL
– http://api.tabelog.com/Ver2.1/RestaurantSearch/
?パラメータ名=パラメータ値…
• 必須パラメタ
– key
APIアクセスキー : 40桁の文字列 ※必須
• その他
– Latitude=緯度 Longitude=経度
– Station=最寄り駅の駅名 String 駅名をURLエンコードした
もの (文字コードはUTF-8)
– Prefecture=都道府県、千葉ならchiba
4
レストラン情報取得API
• リターンパラメタ
– 文字コードはUTF-8
– 詳細は表参照
5
URL例(市川駅中心)と結果
http://api.tabelog.com/Ver2.1/RestaurantSearch/?Key
=(APIアクセスキー)
d&Latitude=35.729052&Longitude=139.907949&Sea
rchRange=large&ResultSet=large
RestaurantInfo 要素
の下に Item 要素
のリスト。
Item 要素1つ = レ
ストラン1つ
Item 要素以下の要
素は、たまに抜け
ている。
6
URLの生成とアクセス
$request = "http://api.tabelog.com/Ver2.1/RestaurantSearch/";
$pref = "chiba";
$station = "市川";
$query = "";
$query .= "Key=";
$query .= "3f22c73cb1a100f9a2f2cc7126a5d1ccd2c4af0d";
$query .= "&Prefecture=";
$query .= $pref;
$query .= "&Station=";
$query .= urlencode($station);
$query .= "&SearchRange=large&ResultSet=large";
$response = simplexml_load_file($request . "?" . $query);
simplexml_load_file()は、引数に指定されたURLに
アクセスして、応答を受け取る関数
$responseに応答されたXMLドキュメントがオブジェ
クトに格納される
7
XMLドキュメントへのアクセス
<item>へのアクセスは、$response->Item のようにする。
8
レストラン情報の表示例
$response->Itemがある限りループ
$response-> Item以下を$itemとする
if (isset($response->Item)) {
echo "検索結果:" . count($response->Item) . "件 <br />";
echo "<hr>";
foreach ($response->Item as $item) {
echo "店名:" . htmlspecialchars($item->RestaurantName) . "<br />";
echo "種類:" . htmlspecialchars($item->Category) . "<br />";
echo "評価:" . htmlspecialchars($item->TotalScore) . "<br />";
echo "住所:" . htmlspecialchars($item->Address) . "<br />";
echo "電話:" . htmlspecialchars($item->Tel ) . "<br />";
echo "<hr>";
}
} else {
echo "検索結果:0件 <br />";
}
htmlspecialchars()関数
文字の中には HTML において特殊な意味を持つものがあり、
それらの本来の値を表示したければ HTML の表現形式に変
換してやらなければなりません。 この関数は、これらの変換を
9
行った結果の文字列を返します。
課題
• レベル0: 今回のプログラムと、その実行結果をレポー
トしなさい。検索するデータをいくつか変えて試してく
ださい。(サンプルは資料ページにあります)
• レベル1: 駅名ではなく、緯度・経度から検索できるよう
に改造してください。フォームから入力した住所や地
名から緯度・経度を取得するようにしてください。 前回
のプログラムを参考にしてください。
• レポート方法
– プログラムそのもの(テキスト)
– 実行画面のスクリーンダンプ
– 考え・感想
10
課題(つづき)
• 提出物
– プログラムファイルと実行結果をWordのファイルに貼り付
けて、メールで提出する
• 実行画面は、フリーソフトのWinShotを使うか、または、Altキー+
PrintScreenキーを使う。
– ファイル名: kadai0531-学籍番号.doc
• 提出方法
– メールで、[email protected]に送る
– 私個人宛のメールは受け取らないので注意
• 締切
– 6/6 23:59
11
参考
① geo.phpの利用(5/24)
– cyaneum.orgにはインストール済み
– 古いgoogle maps APIを使っているが一応動く
② Vmutoの日記:PHPでGoogle Maps APIのジ
オコーディングを使う(2010-11-26)
– 場所名だと時々間違えることがある
12
②の使い方(1)
• ソースが公開されている
– http://d.hatena.ne.jp/ymuto/20101126/1290729
326
– このファイルを自分のフォルダ(ディレクトリ)に置
いて、require_onceして使う
• www.cyaneum.orgには入れてある
– 自分のPHPファイルからrequire_onceして使う
13
②の使い方(2)
• 場所名から緯度経度を得る
– $loc = function place2location($place)
– $placeは、場所名か住所の文字列
– 返り値は、緯度・経度オブジェクト
• $loc->lat
• $loc->lon
緯度
経度
14
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<body>
<?php
require_once 'geocode.php';
#$loc=place2location('東京タワー'); //住所
$loc=place2location('千葉県市川市国府台1-3-1'); //住所
echo "緯度:" . $loc->lat . "<br>";
echo "経度:" . $loc->lng . "<br>";
#echo '<pre>';
#var_dump($loc);
#echo '</pre>';
?>
15
②の使い方(3)
• 緯度経度から住所を得る
– $addr = function location2address($location)
– $location: 緯度・経度オブジェクト
• $loc->lat
• $loc->lon
緯度
経度
– 返り値 $addr 住所データ
16
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<body>
<?php
require_once 'geocode.php';
$location->lat = 35.7422248;
$location->lng = 139.9077054;
$addr = location2address($location);
echo $addr[5]->long_name; //都道府県
echo $addr[4]->long_name; //市・区・町・村
echo $addr[3]->long_name; //町名
echo $addr[2]->long_name; //丁目
echo $addr[1]->long_name . "-"; //番
echo $addr[0]->long_name . “<br>”; //号
#echo '<pre>';
#var_dump($addr);
#echo '</pre>';
?>
17
②の使い方(4)
• 場所名から住所を得る
– $addr = function place2address($place)
– $place: 場所名の文字列
– $addr: 住所データ
– ※場所名によっては間違えることがある
18
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<body>
<?php
require_once 'geocode.php';
$addr=place2address('東京タワー'); //場所名
#$addr=place2address(‘千葉商科大学’); //場所名
echo $addr[5]->long_name; //都道府県
echo $addr[4]->long_name; //市・区・町・村
echo $addr[3]->long_name; //町名
echo $addr[2]->long_name; //丁目
echo $addr[1]->long_name . "-"; //番
echo $addr[0]->long_name . “<br>”; //号
#echo '<pre>';
#var_dump($addr);
#echo '</pre>';
?>
19