GoogleMap口コミをキーワード検索して情報を取得する方法

GoogleMapのレビューを活用しようとしたときに、

以下の壁にぶつかります。

2つの壁

  • GooglePlacesAPI は5つしかレビューを取得できない
  • 他のThirdPirtyAPIでも10件までは取得できるが、キーワード検索ができない

この2つの壁があるせいで、

特定のキーワードについてのレビューをAPIで取得しようとしたときには、ほぼ全部の口コミを取得してからキーワードを検索しないといけません。

今回は、口コミの検索を行ってから特定のキーワードを持つ口コミだけを取得するようにする方法を紹介します。

実装する内容と全体の流れ

今回実装する内容は、

実装内容

GoogleMapsを開いて、

Screenshot

特定のキーワードを検索し、

Screenshot

口コミを検索して取得するまでです。

Screenshot

全体の流れ

これらを実装するために、
今回はPythonのSeleniumというChromeドライバーを使用したweb操作を使用します。

そのため、実装を行うには以下の順に行います。

全体の流れ

①必要な環境のインストール

Python 、chromeドライバーの2つを準備

②コードをコピペ&調整

③実行して取得できたら完成

今回は、この流れに沿って解説していきます。

必要な環境のインストール〜Python, Chromeドライバー〜

今回必要な環境はPythonとChromeドライバーになります。

それぞれ、インストールしておきます。

Pythonインストール方法

Download Python | Python.org

標準的な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で口コミの検索を行って取得する方法について紹介しました。

全ての口コミを取得するのではなく、特定のキーワードに関連した口コミのみを取得したいと思っていたので、自分と同じような方がいれば、活用してみてもらえればと思います。

では、また。

(Visited 21 times, 1 visits today)

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA