ホットペッパーでイカしたお店探しをしてみたくなったので、pythonのAPIを叩いてみました。店舗検索のカスタマイズ性を高めたい場合は、とっても便利です。今回はpythonでホットペッパーのAPIを叩く方法を紹介します。
Contents
前提:pythonのAPIに送信する大まかな基礎情報
多くの人は大丈夫かと思いますがpythonのAPIを操作するには大体下記が必要です。
- メソッド(GET,POST,PUT,DELETE)
- ヘッダー(データの種類、認証情報など)
- JSON形式で受信したいデータ情報
API操作に慣れていない人はこれを意識した状態で進むといいと思います。
ホットペッパーのAPIについて
ホットペッパー(リクルート)のAPIリファレンス
ホットペッパーのAPIリファレンスは下記URLから確認できます。
https://webservice.recruit.co.jp/doc/hotpepper/reference.html
APIの認証キーは「新規登録」が必要
ホットペッパーでAPIをたたくために必要な認証キー(APIキー)は、APIリファレンスで「新規登録」が必要です。また、APIキーはメールでしか確認できませんので、忘れないようにしましょう。(新規登録⇒APIリファレンス)
メソッド
メソッドはGETメソッドを用いる。
※APIリファレンスに書いてあります。
リクエストURL
APIを叩く時のリクエストURLは下記です。
※変わっているかもしれませんのでAPIリファレンスを確認しましょう。
http://webservice.recruit.co.jp/hotpepper/gourmet/v1/
リクエスト時に設定するパラメータ
リクエストURLやAPIキーと共に、以下のパラメータを指定します。どんなパラメータがリクエストに必要なのかは、公式のAPIリファレンスで確認しましょう。
以下の情報は私が最低限必要な情報を抜粋しています。
- 必須
- APIキー
- どれか最低1つ必要
- id,name,name_kana,name_any,tel
- special
- special_or
- large_service_area,service_area,large_area,middle_area,small_area
- keyword
- lat,lng,range
- 他のデータ
- どんな値を指定できるかは、APIリファレンスで確認すること
- 指定した方が良いパラメータ
- データ形式の初期値はxmlなので、json形式でデータが欲しいなら、formatは指定すること
- データ取得件数を指定するならcount(初期値は10※最小1、最大100)
上記のパラメータに基づいて必要なデータを決めていきます。
今回ホットペッパーのAPIで取得するパラメータと認証
必要なパラメータは以下を指定します。
- パラメータ
- 最低1つ必要なパラメータの中から、keywordを選択※「恵比寿駅」のキーワードでお店を探す
- 取得件数を15件にするため、countを設定
パラメータを決めたら、リクエストURLやAPIキーを用いてPythonでリクエストします。
PythonでホットペッパーのAPIを叩く
(その前に)必要なpythonのライブラリ
今回のAPIリクエストのために、requestsのライブラリを使用します。requestsをインストールしていない人は、pythonの環境で以下を操作する必要があります。
1 2 |
// requestsをインストールしていない人 pip install requests |
インストールしたら、実際のpythonコードを記述します。
Pythonのコード
1 2 |
//先ほどインストールしたrequestsのライブラリを呼び出し import requests |
1 2 |
//リクエストURLを変数に指定する URL = 'http://webservice.recruit.co.jp/hotpepper/gourmet/v1/'こ |
1 2 |
//APIリファレンスで新規登録することで取得できるAPIキーを入力してください。 API_KEY = 'xxxxx' |
1 2 3 4 5 6 |
body = { 'key':API_KEY, 'keyword':'恵比寿駅', 'format':'json', 'count':15 } |
- API_KEYは、前の工程で変数に入れたAPIキーが入ります。
- keywordは、最低1つ以上必要なパラメータの中からキーワード検索を選択
- json形式でデータが欲しいので、任意のパラメータformatを指定
- データが15件欲しいので、countを指定
これらを指定したらリクエストをしてみましょう。
1 2 3 |
// APIに必要なURLや変数に格納したbodyをもとに、requestsライブラリでリクエスト // リクエストしたデータをresponseの変数に格納 response = requests.get(URL,body) |
そうしたら、JSONデータの中から、15件の店名を表示させましょう。
1 2 3 4 5 6 7 8 |
// 取得したデータからJSONデータを取得 datum = response.json() // JSONデータの中からお店のデータを取得 stores = datum['results']['shop'] // お店のデータの中から、店名を抜き出して表示させる for store_name in stores: name = store_name['name'] print(name) |
まとめ:APIは素晴らしい
APIを提供してくれるのはありがたいですね。ワンランク上のお店探しに必要な環境を提供してくれるホットペッパー(リクルート)さんに感謝です。