概要
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つの要素と、設定変更のポイントです。
- Python実行環境 (Client Library)
pip install seleniumで入る部分です。Pythonコードから指令を出します。
- ブラウザ本体 (Browser)
- Chrome, Firefox, Edge, Safariなど。実際に画面が表示されるアプリケーションです。PCにインストールされている必要があります。
- WebDriver
- Pythonとブラウザの仲介役となるソフトウェアです。
- Selenium Manager (Selenium 4.6+): ライブラリに含まれるこの機能が、インストールされているブラウザのバージョンを検知し、適切なWebDriver(ChromeDriver, GeckoDriverなど)を自動でダウンロード・設定してくれます。
ブラウザごとのドライバクラス
| ブラウザ | 対応クラス | 備考 |
| Google Chrome | webdriver.Chrome() | 最も一般的。安定性が高い。 |
| Mozilla Firefox | webdriver.Firefox() | GeckoDriver が使用される。 |
| Microsoft Edge | webdriver.Edge() | Chromeベースで互換性が高い。 |
| Apple Safari | webdriver.Safari() | macOS専用。開発メニューからリモート自動化を許可する必要あり。 |
注意点
- ブラウザとドライバのバージョン不整合
- Selenium Manager導入前は最大のトラブル要因でしたが、現在は自動解決されます。ただし、オフライン環境などでは手動設定が必要になる場合があります。
- 要素の読み込み待ち
driver.get()はページの読み込み完了まで待ちますが、Ajaxなどで後から表示される要素は待ってくれません。time.sleep()ではなくWebDriverWaitを使うのが実務的な定石です。
- 終了処理 (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() だけで即座に自動化を開始できるようになりました。まずはブラウザの起動と終了から試してみてください。
