喫煙できる店を検索する
喫煙できる店を検索します。リクルートWebサービスが提供するHotpepperグルメサーチAPIを使って「北千住駅から300m以内で喫煙可能な店」を検索します。
Powered by ホットペッパー Webサービス
HTTP通信ライブラリrequestsによりホットペッパー Webサービスにアクセスし、検索クエリとして北千住駅の緯度・経度、距離(300m以内)、件数(50)を送信します。得られたレスポンスからnon_smokingフィールドの値を得て'全面禁煙'となっている店を除外して表示します。
環境
- windows10 home
- Visual Studio Code 1.66.2
- Python 3.10.4
準備
APIを利用するにはAPIキーが必要になるため、こちらのサイトでメールアドレスを登録しキーを取得します。
webservice.recruit.co.jp
コード
requests.getでリクエストURLにアクセス、検索クエリを渡します。戻り値をresponceに入れ、json.loadsにより辞書形式に変換します。 APIリファレンスによると、店舗の情報は results>shop の構造となっており、その内容をresultに取り込みます。その中の'non_smoking'フィールド(辞書のキーが'non_smoking')の値が「全面禁煙」となっているものを除外します。
コード中の'xxxxxxxxxxxxxxxxxx'には予め取得したAPIキーを入れます。
import requests import json # 検索クエリ query = { 'key': 'xxxxxxxxxxxxxxxxxx', # APIキー 'lat': '35.75012327488292', # 北千住駅の緯度 'lng': '139.80508505043517', # 北千住駅の経度 'range': '1', # 300m以内 'count': 50, # 取得データ数 'format': 'json' # データ形式json } # グルメサーチAPIのリクエストURL url = 'http://webservice.recruit.co.jp/hotpepper/gourmet/v1/' # URLとクエリでリクエスト responce = requests.get(url, query) # 戻り値をjson形式で読み出し、['results']['shop']を抽出 result = json.loads(responce.text)['results']['shop'] # 'non_smoking'フィールドが'全面禁煙'以外の場合 # 店名、'non_smoking'フィールド、ジャンルを表示 for i in result: if i['non_smoking'] != '全面禁煙': print(i['name'],'■', i['non_smoking'],'■', i['genre']['name'])
実行結果
北千住駅から300m以内で「全面禁煙」ではない店が一覧で表示されます。
ダッキーダック Ducky Duck 北千住店 ■ 未確認 ■ カフェ・スイーツ
千寿籠太 北千住店 ■ 一部禁煙 ■ 居酒屋
八重寿 ■ 未確認 ■ 居酒屋
ROCKBAR 7thchord セブンスコード ■ 禁煙席なし ■ ダイニングバー・バル
ダーツ&ビリヤード Link リンク 北千住店 ■ 禁煙席なし ■ カラオケ・パーティ
それゆけ!鶏ヤロー! 北千住店 ■ 禁煙席なし ■ 居酒屋
かほりや ■ 一部禁煙 ■ 居酒屋
個室居酒屋 水面月 MINAMOTSUKI 北千住店 ■ 禁煙席なし ■ 居酒屋
個室居酒屋 ゆらり 北千住店 ■ 禁煙席なし ■ 居酒屋
おぼん de ごはん ルミネ北千住店 ■ 未確認 ■ その他グルメ
ここのつ ■ 一部禁煙 ■ 創作料理
久助 北千住 ■ 禁煙席なし ■ 居酒屋
目利きの銀次 北千住西口駅前店 ■ 一部禁煙 ■ 居酒屋
カラオケアイランド 北千住 ■ 一部禁煙 ■ カラオケ・パーティ
以下のサイトを参考にさせていただきました
Zenn > ホットペッパーのAPIを使ってレストランのデータを取得する