Google Places API (New) を使った店舗情報と口コミデータの取得方法
はじめに
Google mapはさまざまな店舗・口コミ情報が掲載されており、観光などのビジネスで活用できる情報がたくさんあります。
今回はそんなgoogle mapの情報をAPI経由で使う方法をご紹介します!
そこで、Google Maps Platform の Places API (New) を使って、簡単に店舗情報や口コミデータを取得する方法を紹介します。この記事では、Pythonを使った実装方法をステップバイステップで解説しますので、ぜひ参考にしてください。
注意事項: Google Mapのスクレイピングは利用規約で禁止されています
まず始めに、Google Maps の利用規約を確認しましょう。Googleは、Google Mapsのデータをスクレイピングすることを明確に禁止しています。そのため、データを取得する際には、必ず公式APIを使用してください。詳細はGoogle Maps Platform 利用規約をご覧ください。
ネットを検索すると、さまざまなスクレイピングツールなどが出てきますが、しっかり規約を確認しておきましょう。
以下に日本語訳にしたものを提供します。
1. Google Cloud Platform プロジェクトの作成と Places API の有効化
まずはじめに、Google Cloud Platform (GCP) でプロジェクトを作成し、Places API を有効化する必要があります。
Google Cloud Consoleにログインし、Google Cloud Consoleにアクセスします。
新しいプロジェクトを作成します。プロジェクト名を入力し、作成ボタンをクリックします。
ナビゲーションメニューから**「API とサービス」** > **「ライブラリ」**に移動します。
検索バーに**「Places API」と入力し、表示された「Places API」をクリックして「有効化」**を選択します。
特に以下に注意してください。まずはgoogle cloudのプロジェクトを設定しPlace APIを有効にします。実際に有効になっているかは以下の2つで確認してください。
2. API キーの取得と制限の設定
次に、API キーを取得して、適切な制限をかけます。
「API とサービス」 > **「認証情報」**に移動します。
**「認証情報を作成」ボタンをクリックし、「API キー」**を選択します。
作成された API キーをコピーし、**「API キーの制限と名前変更」**から適切な制限(IP アドレスやリファラ制限)を設定します。
3. Places API を使って店舗情報と口コミデータを取得
Pythonを使って、実際に API リクエストを送信し、データを取得する方法を紹介します。
import requests
import json
API_KEY = "xxxx"
# 場所の検索エンドポイント
search_url = "https://maps.googleapis.com/maps/api/place/findplacefromtext/json"
search_params = {
'input': 'スターバックス',
'inputtype': 'textquery',
'fields': 'place_id',
'key': API_KEY
}
# 場所の検索リクエスト
response = requests.get(search_url, params=search_params)
response_data = response.json()
# レスポンスデータのデバッグ出力
print("Search Response:", json.dumps(response_data, indent=2, ensure_ascii=False))
if 'candidates' in response_data and len(response_data['candidates']) > 0:
place_id = response_data['candidates'][0]['place_id']
else:
raise Exception("Place not found")
# 場所の詳細エンドポイント
details_url = "https://maps.googleapis.com/maps/api/place/details/json"
details_params = {
'place_id': place_id,
'fields': 'name,rating,reviews',
'key': API_KEY
}
# 場所の詳細リクエスト
response = requests.get(details_url, params=details_params)
details = response.json()
# レスポンスデータのデバッグ出力
print("Details Response:", json.dumps(details, indent=2, ensure_ascii=False))
# 口コミデータの抽出
reviews = details.get('result', {}).get('reviews', [])
for review in reviews:
print(f"Review by {review['author_name']}: {review['text']} (Rating: {review['rating']})")
# レスポンスデータを JSON ファイルに保存
with open('place_details.json', 'w', encoding='utf-8') as json_file:
json.dump(details, json_file, ensure_ascii=False, indent=2)
print("詳細情報が place_details.json に保存されました。")
このコードでは、まず`findplacefromtext`エンドポイントを使って「スターバックス」の場所IDを取得しています。次に、`place/details`エンドポイントを使って、その場所の詳細情報(名前、評価、口コミ)を取得しています。最後に、取得した詳細情報を`place_details.json`ファイルに保存しています。
エラーの対処方法
もし以下のエラーが発生した場合、
This API project is not authorized to use this API.
以下の点を確認してください:
API の有効化: Places API が有効になっているか確認します。
API キーの制限: API キーの使用範囲が正しく設定されているか確認します。
課金情報: GCP プロジェクトに課金情報が設定されているか確認します。
まとめ
Google Places API (New) を使うことで、簡単に店舗情報や口コミデータを取得することができます。この記事では、Pythonを使ってAPIリクエストを送信し、データを取得して JSON ファイルに保存する方法を紹介しました。ぜひ試してみてください!
参考にした記事もぜひご覧ください:
これで、Google Places API (New) の基本的な使い方とできることが理解できたと思います。次回はさらに応用的な使い方を紹介していきますので、お楽しみに!