Google Mapsに投稿されているクチコミをPythonで取得する
やること
緯度経度を指定し、周辺のスポットに投稿されているGoogleMaps上のクチコミを取得します。
⚠️APIの仕様上、1つのスポットに対して5つのクチコミしか取得できません。
今回は、Pythonのgoogle-maps-services-pythonを使用する。
ライブラリの詳しい使い方は以下に書かれています。
実際に使ってみる
APIキーの準備
GCPのコンソールからGoogleMapsを使用できるAPIキーを取得しておく。
import googlemaps
key = "API KEY"
client = googlemaps.Client(key)
緯度軽度からスポットの情報取得
クチコミを取得したい緯度経度をlocationに指定し、どの程度の範囲からスポットを取得するかをradiusに指定する。(単位はメートル)
nearby_spots = client.places_nearby(
location=(34.7024, 135.4959),
radius=200,
language='ja')
この実行によって取得できるnearby_spotsは以下の形式になっている。
{
'html_attributions': [],
'next_page_token': '...',
'results': [...],
'status': 'OK'
}
results
にGoogleMapsのスポットの情報が入っている。
しかし、一度に取得できるスポットの個数は20個なので、20個より多くの情報を取得したい場合は、 next_page_token
を使用して
nearby2 = client.places_nearby(page_token=nearby_spots['next_page_token'])
このように書くことで取得することができる。
results
の中のデータの形式は、以下のような形式になっている。(スポットによって付与されている情報が変わるので、適当なものだけ書いています)
{
'geometry': {
'location': {
'lat': ...,
'lng': ...
}
},
'name': 'スポットの名称',
'place_id': ...,
'rating': 3,
'types': [...],
// ...その他色々
}
スポットの詳細情報取得(クチコミ取得)
client.places_nearby()
で取得できるresults
にはクチコミの情報が入っていないので、place_id
を使用して、別のAPIを叩き、スポットの詳細情報を取得します。
spot = client.place(
place_id='{place_id}'
)
これによって、1つのスポットの詳細情報を取得できる。
取得できるデータは以下のような形式。
{
'html_attributions': [],
'result': {
'address_components': [...],
'geometry': {...},
'name': 'スポットの名称',
'place_id': ...,
'rating': 3,
'reviews': [
{
'author_name': 'name',
'author_url': ...,
'language': ...,
'profile_photo_url': ...,
'rating': 3,
'relative_time_description': ...,
'text': 'review text',
'time': ...
},
// ...最大で5つ入っている
],
'types': [...],
// ...そのほか色々
},
'status': 'OK'
}
このreviews
がスポットのクチコミ情報になります🎉
スポットごとに5件以上のクチコミを取得したかったですが、調べた感じ無理そうでした...
※reviews
はレビューが1つも存在しない場合にはキーが存在しなくなるので注意。
'reviews' in spot['result']
などでキーの存在確認をすると良いかも。
Discussion