🌊
ホットペッパーのAPIを使ってレストランのデータを取得する
概要
WHY?
レストランのレコメンドをするアプリをつくりたい
HOW?
飲食店検索アプリのAPIを用いて、レストランのデータを取得する
WHAT?
- 主要(?)の飲食店検索アプリのAPIを調べた
この記事を参考にした
読んで思ったことは、食べログが意外にロゴが個性的だった
あと、食べログ 百名店がいい感じで彼女とのデートで使おうと思ったけど、よく考えたら彼女がいなかった
以上から、いまのところ無料で使えるのはホットペッパーだけだった
実装
package
terminal
pip install jupyterlab requests pandas python-dotenv
-
python-dotenv
apiの環境変数まわり -
jupyterlab
遊び場、データをいじって、理解を深める場所 -
requests
apiに投げる -
pandas
データをいい感じにする
フォルダの構成
.
├── .env
├── Pipfile
├── config.py
├── ext_data.ipynb
├── ext_data.py
└── restaurants_tokyo.csv
*Pipfileは,pipenvを用いる際のファイル
*ext_data.ipynbはいろいろためすときに使ったファイル
.env
HOTPEPPER_API_KEY="YOUR_API_KEY"
config.py
from dotenv import load_dotenv
load_dotenv()
import os
HOTPEPPER_API_KEY = os.getenv('HOTPEPPER_API_KEY')
ext_data.py
import json
import requests
import pandas as pd
# config.py
import config
api_key = config.HOTPEPPER_API_KEY
i_start = 1
restaurant_datas=[]
while True:
query = {
'key': api_key,
'large_area': 'Z011', # 東京
'order': 1, #名前の順
'start': i_start, #検索結果の何番目から出力するか
'count': 100, #最大取得件数
'format': 'json'
}
url_base = 'http://webservice.recruit.co.jp/hotpepper/gourmet/v1/'
responce = requests.get(url_base, query)
result = json.loads(responce.text)['results']['shop']
if len(result) == 0:
break
for restaurant in result:
restaurant_datas.append([restaurant['name'], restaurant['address'], restaurant['budget']['code'], restaurant['genre']['code']])
i_start += 100
print(i_start)
columns = ['name', 'address', 'budget', 'genre']
df_restaurants = pd.DataFrame(restaurant_datas, columns=columns)
df_restaurants.to_csv('restaurants_tokyo.csv')
Tips
実装中でのつまったとこなど
Q. ホットペッパーグルメのapiで大サービスエリアコードの地方と値の対応がわからない
A. ホットペッパーグルメのマスタAPIを利用して、レスポンスXMLを出力
terminal
$curl http://webservice.recruit.co.jp/hotpepper/large_service_area/v1/?key=YOUR_API_KEY | xmllint --format -
<?xml version="1.0" encoding="UTF-8"?>
<results xmlns="http://webservice.recruit.co.jp/HotPepper/">
<api_version>1.20</api_version>
<results_available>9</results_available>
<results_returned>9</results_returned>
<results_start>1</results_start>
<large_service_area>
<code>SS10</code>
<name>関東</name>
</large_service_area>
<large_service_area>
<code>SS20</code>
<name>関西</name>
</large_service_area>
<large_service_area>
<code>SS30</code>
<name>東海</name>
</large_service_area>
<large_service_area>
<code>SS40</code>
<name>北海道</name>
</large_service_area>
<large_service_area>
<code>SS50</code>
<name>東北</name>
</large_service_area>
<large_service_area>
<code>SS60</code>
<name>北陸・甲信越</name>
</large_service_area>
<large_service_area>
<code>SS70</code>
<name>中国</name>
</large_service_area>
<large_service_area>
<code>SS80</code>
<name>四国</name>
</large_service_area>
<large_service_area>
<code>SS90</code>
<name>九州・沖縄</name>
</large_service_area>
</results>
参考にしたサイト
packageの各document
Discussion