GoogleMap口コミをキーワード検索して情報を取得する方法
GoogleMapのレビューを活用しようとしたときに、
以下の壁にぶつかります。
2つの壁
- GooglePlacesAPI は5つしかレビューを取得できない
- 他のThirdPirtyAPIでも10件までは取得できるが、キーワード検索ができない
この2つの壁があるせいで、
特定のキーワードについてのレビューをAPIで取得しようとしたときには、ほぼ全部の口コミを取得してからキーワードを検索しないといけません。
今回は、口コミの検索を行ってから特定のキーワードを持つ口コミだけを取得するようにする方法を紹介します。
目次(クリックで読みたい部分にジャンプできます)
実装する内容と全体の流れ
今回実装する内容は、
実装内容
GoogleMapsを開いて、
特定のキーワードを検索し、
口コミを検索して取得するまでです。
全体の流れ
これらを実装するために、
今回はPythonのSeleniumというChromeドライバーを使用したweb操作を使用します。
そのため、実装を行うには以下の順に行います。
全体の流れ
①必要な環境のインストール
Python 、chromeドライバーの2つを準備
②コードをコピペ&調整
③実行して取得できたら完成
今回は、この流れに沿って解説していきます。
必要な環境のインストール〜Python, Chromeドライバー〜
今回必要な環境はPythonとChromeドライバーになります。
それぞれ、インストールしておきます。
Pythonインストール方法
Chromeドライバーインストール
Chrome for Testing availability (googlechromelabs.github.io)
chromeのバージョンが115より新しいのものは、テスト版としてインストールして用います。
この2つのインストールが終わり次第、コードを書いていけます。
不安な方も一旦以下のコードを書いてみて、動いているかを確かめることで、正常に準備できているかを判断するようにしましょう。
必要に応じてインストール
また、追加で必要な「selenium」モジュールもインストールしておきます。
pip install selenium
もし、インストールしていないで以下のコードを実行すると、エラーとなりますので、
まだインストールしているかわからない、という方は実行してみてからインストールしても良いでしょう。
コードをコピペ&調整
では、ここからコードをコピペしていきます。
特定のディレクトリに以下のPythonコードを書いてください。
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
import time, sys
def open_kutikomi(driver,placeName):
# Googleのホームページを開く
driver.get("https://www.google.com/maps")
# 検索ボックスを見つける
search_box = driver.find_element(By.NAME, 'q')
search_box.send_keys(placeName)
search_box.send_keys(Keys.RETURN)
time.sleep(5) # 5秒間待機
# クラス名"hh2c6"を持つすべての要素を取得
buttons = driver.find_elements(By.CLASS_NAME, "hh2c6")
# 二つ目のボタンをクリックする
if len(buttons) > 1: # 要素が2つ以上あることを確認
buttons[1].click() # インデックスは0から始まるため、2つ目の要素はインデックス1
else:
print("対象のボタンが十分に存在しません。")
sys.exit()
# "aria-label"属性が"クチコミを検索"のボタンを見つける
search_button = driver.find_element(By.CSS_SELECTOR, "button[aria-label='クチコミを検索']")
# ボタンをクリック
search_button.click()
time.sleep(3) # 5秒間待機
def search_kutikomi(driver,search_word):
# 指定クラス名を持つinput要素を見つける
input_element = driver.find_element(By.CSS_SELECTOR, "input.LCTIRd.keSVkf.fontBodyLarge")
# キーワードを入力
input_element.send_keys(search_word)
# Enterキーを押す
input_element.send_keys(Keys.RETURN)
time.sleep(4) # 5秒間待機
# 特定のクラス名を持つdiv要素をすべて見つける
elements = driver.find_elements(By.CSS_SELECTOR, "div.jftiEf.fontBodyMedium")
# 口コミ文を含む要素をすべて検索
reviews = driver.find_elements(By.CSS_SELECTOR, 'span.wiI7pd')
# 口コミ文を表示し、それぞれに番号を振る
for index, review in enumerate(reviews, start=1):
print(f"{index}. {review.text}")
input_element.clear()
return elements
if __name__ == "__main__":
driver = webdriver.Chrome()
placeName = "所沢航空記念公園"
search_word = "子供"
open_kutikomi(driver,placeName)
search_kutikomi(driver,search_word)
Pythonコードを書いたら、
ファイル名を指定して実行してみてください。
python3 ファイル名
もしchrome画面が立ち上がり、口コミが取得できたら完成です。
まとめ
今回は、Pythonで口コミの検索を行って取得する方法について紹介しました。
全ての口コミを取得するのではなく、特定のキーワードに関連した口コミのみを取得したいと思っていたので、自分と同じような方がいれば、活用してみてもらえればと思います。
では、また。