【Python】Seleniumでブラウザ自動操作:環境構築と基本の仕組み

目次

概要

PythonでWebブラウザを自動操作するための標準的ライブラリ「Selenium」の導入方法と基礎解説です。

Webアプリケーションのテスト自動化や、Webサイトからのデータ収集(スクレイピング)に使用されます。

Selenium 4.6以降導入された「Selenium Manager」により、面倒なWebDriverの管理が自動化され、環境構築が非常に簡単になりました。

仕様(入出力)

  • 入力: ターゲットとなるURL
  • 出力: 指定したブラウザの起動とページ表示
  • 前提:
    • Google Chrome などのブラウザ本体がインストールされていること。
    • selenium ライブラリのインストール(pip install selenium)。

基本の使い方

ライブラリをインストールし、Chromeブラウザを起動してGoogleのトップページを開く最も基本的なコードです。

以前のようにChromeDriverを別途ダウンロードしてパスを通す必要はありません。

pip install selenium
from selenium import webdriver
import time

# ブラウザを起動(ドライバは自動取得されます)
driver = webdriver.Chrome()

# Googleにアクセス
driver.get("https://www.google.com")

# 5秒待機して確認
time.sleep(5)

# ブラウザを閉じる
driver.quit()

コード全文

ブラウザを起動し、ページタイトルを取得してコンソールに出力した後、安全に終了する完全な実装例です。

主要なブラウザ(Chrome, Firefox, Edge)ごとの切り替えコメントも記述しています。

from selenium import webdriver
from selenium.common.exceptions import WebDriverException
import time

def start_browser_automation():
    """
    Seleniumを使用してブラウザを起動し、Webページにアクセスするデモ関数。
    Selenium Managerの機能により、WebDriverのインストールは自動で行われます。
    """
    driver = None
    try:
        print("ブラウザを起動しています...")
        
        # 使用するブラウザに合わせてクラスを選択してください
        # Chromeの場合
        driver = webdriver.Chrome()
        
        # Firefoxの場合
        # driver = webdriver.Firefox()
        
        # Edgeの場合
        # driver = webdriver.Edge()
        
        # Safariの場合 (macOSのみ・要追加設定)
        # driver = webdriver.Safari()

        print("Webサイトへアクセス中...")
        target_url = "https://www.python.org"
        driver.get(target_url)

        # ページの情報を取得
        title = driver.title
        current_url = driver.current_url
        
        print("-" * 30)
        print(f"ページタイトル: {title}")
        print(f"現在のURL: {current_url}")
        print("-" * 30)

        # 動作確認のため少し待機
        time.sleep(3)

    except WebDriverException as e:
        print(f"ブラウザ操作中にエラーが発生しました: {e}")
    
    except Exception as e:
        print(f"予期せぬエラー: {e}")

    finally:
        # 処理終了後に必ずブラウザを閉じる
        if driver:
            print("ブラウザを終了します。")
            driver.quit()

if __name__ == "__main__":
    start_browser_automation()

カスタムポイント

Seleniumを構成する3つの要素と、設定変更のポイントです。

  1. Python実行環境 (Client Library)
    • pip install selenium で入る部分です。Pythonコードから指令を出します。
  2. ブラウザ本体 (Browser)
    • Chrome, Firefox, Edge, Safariなど。実際に画面が表示されるアプリケーションです。PCにインストールされている必要があります。
  3. WebDriver
    • Pythonとブラウザの仲介役となるソフトウェアです。
    • Selenium Manager (Selenium 4.6+): ライブラリに含まれるこの機能が、インストールされているブラウザのバージョンを検知し、適切なWebDriver(ChromeDriver, GeckoDriverなど)を自動でダウンロード・設定してくれます。

ブラウザごとのドライバクラス

ブラウザ対応クラス備考
Google Chromewebdriver.Chrome()最も一般的。安定性が高い。
Mozilla Firefoxwebdriver.Firefox()GeckoDriver が使用される。
Microsoft Edgewebdriver.Edge()Chromeベースで互換性が高い。
Apple Safariwebdriver.Safari()macOS専用。開発メニューからリモート自動化を許可する必要あり。

注意点

  1. ブラウザとドライバのバージョン不整合
    • Selenium Manager導入前は最大のトラブル要因でしたが、現在は自動解決されます。ただし、オフライン環境などでは手動設定が必要になる場合があります。
  2. 要素の読み込み待ち
    • driver.get() はページの読み込み完了まで待ちますが、Ajaxなどで後から表示される要素は待ってくれません。time.sleep() ではなく WebDriverWait を使うのが実務的な定石です。
  3. 終了処理 (quit)
    • エラーでプログラムが止まっても、ブラウザプロセスがバックグラウンドに残ることがあります。try...finally ブロック内で必ず driver.quit() を呼ぶようにしてください。

応用

ブラウザの画面を表示せず、バックグラウンドで実行する「ヘッドレスモード」の設定例です。サーバーでの定期実行やスクレイピングの高速化に使用します。

from selenium import webdriver

def run_headless_chrome():
    # オプション設定オブジェクトを作成
    options = webdriver.ChromeOptions()
    
    # ヘッドレスモードを有効化
    options.add_argument("--headless=new")
    
    print("ヘッドレスモードで起動中(画面は表示されません)...")
    driver = webdriver.Chrome(options=options)
    
    try:
        driver.get("https://www.google.com")
        print(f"取得成功: {driver.title}")
    finally:
        driver.quit()

if __name__ == "__main__":
    run_headless_chrome()

まとめ

Seleniumは、Pythonコード(WebDriver)を通じてブラウザを人間と同じように操作するツールです。

最新バージョンでは WebDriver の手動管理が不要になり、webdriver.Chrome() だけで即座に自動化を開始できるようになりました。まずはブラウザの起動と終了から試してみてください。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

私が勉強したこと、実践したこと、してることを書いているブログです。
主に資産運用について書いていたのですが、
最近はプログラミングに興味があるので、今はそればっかりです。

目次