【python】Seleniumコピペするだけ!自動化ツール

Google検索順位のチェック、手作業でやろうとすると本当に面倒ですよね。キーワードごとに検索して、上から何番目かを数えて…「またこの作業か!」とため息をついているあなた、その気持ち、めちゃくちゃ分かります!

私も以前は手作業でやっていて、単純作業の繰り返しに時間を取られ、本質的な業務に集中できないという悩みを抱えていました。でも大丈夫。Seleniumを使えば、その面倒な作業は一瞬で終わります。しかも、この記事を読めば、コピペするだけで自動化ツールが完成します。

「エラーで動かないかも…」そんな心配もご無用です。初心者の方でも迷わないように、具体的な手順とコード、そして「なぜこのコードが必要なのか」まで、丁寧に解説していきますね。

さあ、あなたも今日から「楽」をしましょう!


はじめに:Seleniumって何?

Selenium(セレニウム)とは、Webブラウザを自動で操作するためのツールです。普段私たちがキーボードを打ったり、マウスでクリックしたりするのと同じように、プログラムからブラウザを操ることができます。

これを使えば、Google検索ページを開いてキーワードを入力し、検索ボタンをクリックして、表示された順位を読み取る…といった一連の操作を、すべて自動で行えるようになるんです。まるで自分専属のロボットがWeb操作をしてくれるようなものですね。


必要なもの

まず、ツールを作るためにいくつか準備が必要です。どれも無料で手に入りますので安心してください。

  1. Python
    • プログラミング言語です。今回はPythonを使ってSeleniumを動かします。
    • まだインストールしていない場合は、Python公式サイトから最新版をダウンロードしてインストールしてください。インストール時に「Add Python to PATH」にチェックを入れるのを忘れずに!
  2. Chromeブラウザ
    • 普段使っているGoogle ChromeがあればOKです。
  3. SeleniumとWebDriver Manager
    • これらはPythonのライブラリ(便利な機能の集まり)です。後ほどコマンドでインストールします。

ステップ1: 環境を整えよう(コピペでOK!)

まずは、今回使うツール(ライブラリ)をあなたのパソコンに導入しましょう。

1. Pythonとpipの確認

ターミナル(Mac)またはコマンドプロンプト(Windows)を開いて、以下のコマンドを入力してEnterキーを押してください。

bash
python --version
pip --version

もし、pythonの代わりにpython3と入力する必要がある場合は、以降もpython3を使ってください。(Macの場合はpython3が多いです)
バージョン番号が表示されればOKです。

2. SeleniumとWebDriver Managerのインストール

引き続きターミナルまたはコマンドプロンプトで、以下のコマンドを入力してEnterキーを押してください。

bash
pip install selenium webdriver-manager

Successfully installed ... のようなメッセージが表示されればインストール完了です。

  • Selenium: Webブラウザを自動操作する本体です。
  • WebDriver Manager: Seleniumを使うには、Chromeブラウザを動かすための「運転手」(WebDriver)が必要です。WebDriver Managerは、その「運転手」を自動でダウンロード&設定してくれる便利なツールです。これがないと、手動で「運転手」を管理する手間が発生するので、初心者さんには必須級のライブラリです!

ステップ2: 検索順位チェックツールを作ろう

いよいよコードを書いていきます。難しく考える必要はありません。以下のコードをコピーして、google_rank_checker.pyという名前でファイルに保存してください。

1. コピペで使えるPythonコード

“`python
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.by import By
from webdriver_manager.chrome import ChromeDriverManager
import time

def get_google_rank(keyword, num_results=10):
“””
指定されたキーワードのGoogle検索順位をチェックし、表示します。

Args:
    keyword (str): 検索したいキーワード。
    num_results (int): 何位までチェックするか(デフォルトは10位まで)。
"""
print(f"--- 検索キーワード: {keyword} の順位チェックを開始します ---")

# WebDriverのセットアップ
# ChromeDriverManager().install() で、Chromeのバージョンに合ったWebDriverを自動でダウンロードして準備します。
# service = Service(...) で、そのWebDriverを使ってChromeを起動する準備をします。
service = Service(ChromeDriverManager().install())

# webdriver.Chrome(service=service) で、実際にChromeブラウザを起動します。
# この時、目に見える形でブラウザが開きます。(ヘッドレスモードにすれば開かずにバックグラウンドで実行も可能ですが、今回は目に見える形で動かします)
driver = webdriver.Chrome(service=service)

try:
    # Google検索ページにアクセス
    # f-string(f"...") を使って、キーワードをURLに埋め込んでいます。
    search_url = f"https://www.google.com/search?q={keyword}"
    driver.get(search_url) # 指定したURLにブラウザを移動させます。

    # 読み込みが完了するまで少し待機(重要!)
    # Webページが完全に読み込まれる前に要素を探しに行くとエラーになることがあるので、少し待ちます。
    time.sleep(3)

    # 検索結果のブロックを取得
    # Googleの検索結果は、通常 <div class="g"> のようなHTML要素のブロックで囲まれています。
    # By.CLASS_NAME, "g" で、「g」というクラス名を持つすべての要素を見つけます。
    # find_elements (複数形) を使うことで、該当する要素をリストとして取得できます。
    search_results = driver.find_elements(By.CLASS_NAME, "g")

    # 指定された件数まで順位を表示
    # enumerateを使うと、リストの要素とそのインデックス(順番)を同時に取得できます。
    # インデックスは0から始まるので、+1して「1位」「2位」と表示します。
    for i, result in enumerate(search_results[:num_results]):
        try:
            # タイトルを取得
            # 各検索結果ブロック(result)の中から、<h3>タグを探してタイトルを取得します。
            # find_element (単数形) で、最初に見つかった1つの要素を取得します。
            title_element = result.find_element(By.CSS_SELECTOR, 'h3')
            title = title_element.text # 要素のテキスト(表示されている文字)を取得します。

            print(f"順位 {i + 1}: {title}")

        except Exception as e:
            # タイトルが取れなかった場合(広告や特殊な表示の場合など)はスキップ
            # print(f"順位 {i + 1}: (タイトル取得エラー)") # 必要であればエラー内容を表示
            pass

except Exception as e:
    # 予期せぬエラーが発生した場合
    print(f"エラーが発生しました: {e}")
finally:
    # ブラウザを閉じる
    # 処理が終わったら、開いたChromeブラウザを忘れずに閉じます。
    driver.quit()
    print("--- 順位チェックが完了しました ---")

このファイルが直接実行された場合にのみ以下のコードが動きます

if name == “main“:
search_keyword = input(“検索したいキーワードを入力してください: “)
while True:
try:
num = int(input(“何位までチェックしますか?(例: 10): “))
if num <= 0:
print(“1以上の数字を入力してください。”)
continue
break
except ValueError:
print(“無効な入力です。数字を入力してください。”)

get_google_rank(search_keyword, num)

“`

2. コードの解説(専門用語もわかりやすく)

  • import: 必要な道具(ライブラリ)を呼び出す呪文です。
  • Service, By: Seleniumの部品です。ServiceはWebDriverの設定、ByはHTML要素を探す方法(クラス名、タグ名など)を指定するのに使います。
  • ChromeDriverManager().install(): これが先ほどインストールしたWebDriver Managerの魔法です!あなたのChromeブラウザのバージョンにぴったりの「運転手」(WebDriver)を自動で探し出して、ダウンロードして、設定してくれます。手動でWebDriverのバージョンを合わせる手間が一切なくなります。
  • driver = webdriver.Chrome(service=service): 準備した「運転手」を使って、Chromeブラウザを起動します。
  • driver.get(url): 指定したURLのページを開きます。
  • time.sleep(3): 「3秒待ってね」という指示です。Webページは読み込みに時間がかかることがあるので、要素を探し始める前に少し待つことでエラーを防ぎます。これはとても重要なポイントです!
  • driver.find_elements(By.CLASS_NAME, "g"): 「HTMLの中からgというクラス名を持つ要素を全部見つけてきて!」という命令です。Googleの検索結果は、gというクラス名のdivタグに囲まれていることが多いので、これで各検索結果のブロックをまとめて取得できます。
    • ポイント: find_elementsのようにsがつくものは「複数形」、つまり条件に合うすべての要素をリスト形式で取得します。find_element(単数形)だと、最初に見つかった1つだけを取得します。
  • for i, result in enumerate(search_results[:num_results]):: 取得した検索結果のリストを順番に見ていくためのループ処理です。enumerateを使うと、iに0, 1, 2…といった番号が、resultにリストの各要素が順番に入ります。[:num_results]は「指定された件数(num_results)まで」という意味です。
  • result.find_element(By.CSS_SELECTOR, 'h3'): 各検索結果ブロック(result)の中から、h3タグ(Webページのタイトルによく使われるタグ)を探して取得します。
  • title_element.text: 取得したHTML要素(h3タグ)の中から、実際に画面に表示されている文字(テキスト)を取り出します。
  • driver.quit(): 処理が終わったら、開いたブラウザを閉じます。これを忘れると、ブラウザが開きっぱなしになってしまうので注意しましょう。
  • try-except-finally: エラー対策のブロックです。
    • try: ここに書かれたコードを実行します。
    • except Exception as e: tryの中で何かエラーが起こったら、そのエラー情報(e)を受け取って、このブロックの処理を実行します。今回はエラーメッセージを表示します。
    • finally: tryの中の処理が成功しても失敗しても、必ず最後にこのブロックの処理を実行します。今回はブラウザを閉じる処理をここに入れています。

ステップ3: ツールを実行してみよう!

google_rank_checker.pyを保存したフォルダをターミナルまたはコマンドプロンプトで開いて、以下のコマンドを入力し、Enterキーを押してください。

bash
python google_rank_checker.py

すると、以下のように「検索したいキーワードを入力してください: 」と聞かれるので、調べたいキーワードを入力してEnter。

検索したいキーワードを入力してください: 自動化ツール
何位までチェックしますか?(例: 10): 5

すると、Chromeブラウザが自動で起動し、Google検索ページを開いて、指定したキーワードで検索し、結果をターミナルに表示してくれます!

--- 検索キーワード: 自動化ツール の順位チェックを開始します ---
順位 1: [何かのタイトル]
順位 2: [何かのタイトル]
順位 3: [何かのタイトル]
順位 4: [何かのタイトル]
順位 5: [何かのタイトル]
--- 順位チェックが完了しました ---

どうですか?まるで魔法のように自動で動いたはずです!


よくあるエラーと対策

「コピペしたのに動かない!」そんなあなたのために、よくあるエラーとその解決策もご紹介します。

エラー1: AttributeError: 'Service' object has no attribute 'process' など

  • 原因: Seleniumのバージョンが古いため、Serviceオブジェクトの使い方が変わってしまった可能性があります。
  • 対策: pip install --upgrade selenium を実行してSeleniumを最新版にアップデートしてみてください。

エラー2: NoSuchElementException

  • 原因: 「指定した要素が見つからないよ!」というエラーです。
    • ページがまだ完全に読み込まれていない
    • Googleの検索結果ページのHTML構造が変わってしまった
    • 指定したクラス名やタグ名が間違っている
    • 広告など、通常の検索結果とは異なる要素を取得しようとした
  • 対策:
    1. time.sleep() の秒数を増やしてみる: time.sleep(3)time.sleep(5)time.sleep(10) に増やして、ページ読み込みを待つ時間を長くしてみてください。
    2. 要素の確認: Googleの検索結果のHTML構造は頻繁に変わります。もし上記のコードが動かなくなった場合は、Chromeの開発者ツール(F12キーで開けます)を使って、検索結果のタイトルやURLがどのHTMLタグ(<div class="g"><h3> など)に入っているかを確認し、By.CLASS_NAMEBy.CSS_SELECTOR の値を修正する必要があるかもしれません。
      • 今回のコードではgというクラス名、h3タグを使用していますが、ここが変わるとエラーになります。

エラー3: ブラウザが開かない、またはすぐに閉じてしまう

  • 原因: WebDriverのダウンロードに失敗したか、環境パスがうまく設定されていない可能性があります。
  • 対策: pip install --upgrade webdriver-manager を実行してwebdriver-managerも最新版にしてみてください。それでもだめな場合は、Pythonの再インストールを検討し、「Add Python to PATH」にチェックを入れたか再確認しましょう。

まとめ:自動化で未来の時間を手に入れよう!

お疲れ様でした!これであなたは、Google検索順位のチェック作業を自動化できる強力なツールを手に入れました。

最初は「エラーが出るんじゃないか」「難しそう」と感じるかもしれませんが、一度動いてしまえば、その便利さに感動するはずです。手作業で10分かかっていた作業が、たった数秒で終わる。この「生まれた時間」を、もっと創造的な仕事や、プライベートな時間に活用してください。

今回のツールは基本的なものですが、ここからさらに「複数のキーワードをまとめてチェックする」「結果をCSVファイルに保存する」といった応用も可能です。ぜひ、これをきっかけに自動化の世界を楽しんでみてください!

私も現役エンジニアとして、もっと皆さんの業務を効率化できるような情報を提供していきたいと思います。また次の記事でお会いしましょう!

コメント

タイトルとURLをコピーしました