Python でぐるなび API 使ってみた (実践編)

こんにちは、こんばんは、お疲れ様です。
最近 Python で、ぐるなびAPI を使って、ぐるなびに登録されている お店の情報を取得しました。

この記事では、Python を使ってぐるなび API を使う方法をまとめます。
API がわからないという方は、以下の記事を参照すると概要を把握できると思います。

tetomu.hatenablog.com

今回の作業の環境は以下の通りです。

  • WSL (Ubuntu 16.04.4 LTS)
  • Python (Python 3.6.5 :: Anaconda custom (64-bit))
  • jupyter notebook  (4.4.0)

以下が目次です。

1. Python とは

Python とは、プログラミング言語のひとつです。
プログラミング初学者が学びやすい言語と言われています。
特徴として、機械学習や画像認識との相性がよいことがあげられます。
今回は、Python をつかって、ぐるなび API を使います。

2. ぐるなび API を使うためのアカウント登録する 

今回は、ぐるなびAPI (レストラン検索API)をつかって、
お店の名前に「すし」が含まれているお店の名前の一覧を抽出します。 
事前に、ぐるなびAPI を使用するためのアカウントを作成しておく必要があります。
以下のサイトから登録できます。

ぐるなび Web Service - 新規アカウント発行

利用用途は、お試しの場合、試しに利用でよいでしょう。
適宜、入力を行ってください。 登録すると、メールが送られてきて、完了です。
メールに記載されている keyid は、使用するの控えておいてください。

3. Python を使って、ぐるなび API を使う

まず、全コードを載せます。
作業の流れは、コードの下に載せています。
次回の記事で、コードの解説します。
以下がコードです。

# モジュールのインポート
import json
import urllib.request

# API に渡すパラメータの値の指定
url = "https://api.gnavi.co.jp/RestSearchAPI/v3/"
key = "******************************************" 

##### 上記の key は、ぐるなびAPI のアカウントを作成した際、取得したkeyidを指定
shop_name = "すし"

# API を使う関数の定義
def gnavi_api(shop_name):
    params = urllib.parse.urlencode({
        'keyid': key,
        'name' : shop_name,
    })
    response = urllib.request.urlopen(url + '?' + params)
    return response.read()

# 関数を使って、API から情報を取得
data = gnavi_api(shop_name)

# 取得した情報をJSON形式から辞書型に変換
read_data = json.loads(data)["rest"]

# お店の名前の一覧を格納する list の作成
list_name = []

# お店ごとにループを回し、お店の名前を list に追加する関数の定義 
def get_name(read_data):
    for dic in read_data:
        list_name.append(dic.get("name"))
    return list_name

# 関数を実行し、お店の名前の list を取得
get_name(read_data)

# 出力
['すし 魚游(うおゆう) 銀座店',
 'すし 魚游 (うおゆう)桜木町駅前店',
 '本格シュラスコ&肉すし食べ放題 肉ランド 蒲田店',
 '天然魚・寿司居酒屋 すしまる屋 東三国店',
 '築地すし一番 西浅草店',
 '仙石すし 本店',
 '浅草すし若 雷門店',
 '日本料理 すし哲 ',
 '築地すし鮮 銀座5丁目店',
 '浅草すし若 東陽町店']

# 個人的には、 '本格シュラスコ&肉すし食べ放題 肉ランド 蒲田店' が気になります。
# ぜひ行ってみたいですね。

まとめると、API の URLにアクセスし、JSON形式のデータを取得します。
データの形式を辞書型に変換します。
for 文をつかって、お店の名前の list を取得しています。

今回は以上です。

次回は、上記のコードの解説をします。 ではでは。