概要
Pythonを使用してGoogle Places APIのデータを取得した忘備録です。
APIでデータ取り出すだけならJSとかで問題ないんですが、その後データをこねこねしたかったのでPythonで取得しました。(結局使わなかったけど)
公式ドキュメント等
Google Developers Places API (Googleドキュメント)
google-maps-services-python (PythonクライアントのGit)
Python Client for Google Maps Services (Pythonライブラリドキュメント)
1. Google Place APIを使えるようにする
GCPのプロジェクト作成~API有効までの手順は以下のブログを参考にさせていただきました。
Google Places APIで会社付近の「お食事処」を取得してみる
GCPはAPIの無料枠があるのでそれを使用します。(クレジットカードの登録が必要です)
また、APIキーのアクセス制限では、「リクエストを受け入れるサーバーIPアドレス」に自身のIPアドレスを設定するなどしておくと安全です。
キー盗まれてXX万円請求くるとか話聞くので・・・。
2.APIリクエストを送ってデータ取得
Pythonクライアントのライブラリを以下コマンドでインストールします。
$ pip install -U googlemaps
以下はファイルの内容です。
「東京渋谷駅」で位置情報を検索して、その位置から半径200m以内のレストランの情報を取得します。
import googlemaps
import pprint # list型やdict型を見やすくprintするライブラリ
key = 'Your API' # 上記で作成したAPIキーを入れる
client = googlemaps.Client(key) #インスタンス生成
geocode_result = client.geocode('東京都渋谷駅') # 位置情報を検索
loc = geocode_result[0]['geometry']['location'] # 軽度・緯度の情報のみ取り出す
place_result = client.places_nearby(location=loc, radius=200, type='food') #半径200m以内のレストランの情報を取得
pprint.pprint(place_result)
実行結果
上記ファイルを実行するとコンソールにレストランの情報一覧が表示されます。
おしまい!
最後に
レビューデータを大量に欲しかったんですが、ドキュメントみると
reviews[] a JSON array of up to five reviews.
とあり、取得制限があったので諦めました。笑
Twitter APIでも取得制限で苦しめられた覚えがあります。。。
何かいい方法があったら教えてください。
また、記事に間違いや不明な点があれば遠慮なくご指摘ください。