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
© Copyright 2024 ExpyDoc