【Python】検索ワードに関連するキーワードを収集する

機能

検索ワードに関連するキーワードを収集するPythonプログラムです。

任意のキーワードでGoogle検索を行い、検索結果の下部にある「他のキーワード」を収集します。

例えば、「Python 入門」で検索すると「他のキーワード」として以下を収集します。

さらに、収集したキーワードで検索を行い、収集したキーワードの「他のキーワード」を取集します。

サンプルプログラムでは2階層までキーワードを収集します。

サンプル動画

youtu.be

プログラム

#! python3
# 機能
#  検索ワードに関連するキーワードを収集する
# 使い方
#  1.Pythonを実行する
# 実行コマンド
#  python keyword_searcher.py 検索ワード
#  python keyword_searcher.py Python
#  python keyword_searcher.py Python 入門

import sys
import time
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
import chromedriver_binary

# 検索ワードに関連するキーワードを収集する関数
def search_keyword(driver, keyword, level):
    # Google検索
    driver.get("http://google.com/search?q=" + keyword)
    time.sleep(1)

    # 検索結果の「他のキーワード」取得
    elements = driver.find_elements_by_css_selector(".s75CSd")
    if len(elements) == 0:
        elements = []

    keyword_list = []
    for element in elements:
        keyword_list.append(element.text)

    # 指定階層まで検索したら終了
    level = level - 1
    if level <= 0:
        return keyword_list

    # 取得した「他のキーワード」で検索
    results = []
    for keyword in keyword_list:
        results += search_keyword(driver, keyword, level)

    # 重複を削除して返す
    return list(set(keyword_list + results))


def search(keyword, level):
    # キーワード検索
    driver = webdriver.Chrome()
    results = search_keyword(driver, " ".join(keyword), level)

    # キーワード一覧表示
    for result in sorted(results):
        print(result)


if len(sys.argv) < 2:
    sys.exit("使い方:python keyword_searcher.py 検索ワード")

# 2階層までキーワードを検索する
search(sys.argv[1:], 2)

使い方

  1. Pythonを実行する

実行コマンド

python keyword_searcher.py 検索ワード
python keyword_searcher.py Python
python keyword_searcher.py Python 入門

seleniumとchromedriver-binaryをインストールしていない場合は以下のコマンドを実行して下さい。

pip install selenium
pip install chromedriver-binary

ドライバーのバージョンによっては実行エラーになる場合があります。

また、ログを抑制する方法などもありますので、以下を参考にして下さい。

stmtk358.hatenablog.com

参考文献

www.oreilly.co.jp