MENU
\ お問い合わせはこちら! /

Python ブラウザ自動化入門|Selenium・Playwright のインストールと基本操作を解説

  • Python でブラウザを自動で操作したい!
  • Selenium と Playwright どちらを使えばいい?
  • インストールから動かすまでの手順を知りたい!

このような疑問にお答えします。

Python のブラウザ自動化といえば SeleniumPlaywright の2択です。どちらもブラウザを Python から操作できますが、セットアップのしやすさや API の書き心地に違いがあります。

本記事では両方のインストール方法・基本操作コードを解説し、最後に「どちらを選ぶべきか」の判断軸も紹介します。

ブラウザ自動化でできること

ブラウザ自動化とは、Python のコードでブラウザの操作(クリック・入力・スクロール・スクリーンショット取得など)を自動で行う技術です。

  • Web スクレイピング
    JavaScript で動的に生成されるページのデータも取得できる
  • フォームの自動入力・送信
    ログイン・検索・申し込みフォームなどを自動で操作
  • E2E テスト
    ブラウザ上でのユーザー操作をテストとして実行・検証
  • スクリーンショット取得
    ページの見た目をキャプチャして確認・比較

requests + BeautifulSoup の組み合わせでは取得できない「JavaScript 描画後のコンテンツ」にアクセスできる点が最大のメリットです。

Selenium と Playwright の比較

まず2つのライブラリの特徴を整理します。

SeleniumPlaywright
開発元Selenium プロジェクトMicrosoft
初リリース2004年2020年
対応ブラウザChrome / Firefox / Edge / SafariChromium / Firefox / WebKit
セットアップやや手間(4.x からは改善)1コマンドで完結
待機処理明示的な待機が必要になることが多い自動待機機能が充実
実行速度標準速い
日本語情報量多い(歴史が長い)増加中

どちらを選ぶかは「情報量の多い Selenium か、現代的な API の Playwright か」という選択です。詳しくは記事の最後で解説します。

Selenium の使い方

インストール

pip でインストールします。

Bash
pip install selenium

uv を使っている場合はこちらです。

Bash
uv add selenium

Selenium 4.6 以降は Chrome のドライバー(ChromeDriver)を別途インストールする必要がなくなりました。webdriver.Chrome() を呼ぶだけで自動的に適切なドライバーが取得されます。

ページを開いてタイトルを取得する

まずは最もシンプルな例として、ページを開いてタイトルを表示してみます。

Python
from selenium import webdriver

# Chrome を起動
driver = webdriver.Chrome()

# ページを開く
driver.get("https://example.com")

# タイトルを取得して表示
print(driver.title)  # Example Domain

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

実行すると Chrome が起動してページが表示されます。driver.quit() を忘れるとブラウザが開いたままになるので注意してください。

要素を取得してクリックする

ページ上の要素(ボタン・リンクなど)を取得してクリックするには find_element() を使います。

Python
from selenium import webdriver
from selenium.webdriver.common.by import By

driver = webdriver.Chrome()
driver.get("https://example.com")

# CSS セレクタで要素を取得してクリック
link = driver.find_element(By.CSS_SELECTOR, "a")
link.click()

print(driver.current_url)

driver.quit()

By.CSS_SELECTOR 以外にも、By.ID / By.CLASS_NAME / By.XPATH などで要素を指定できます。

テキストを入力してフォームを送信する

検索フォームやログインフォームへの入力は send_keys() で行います。

Python
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys

driver = webdriver.Chrome()
driver.get("https://www.google.com")

# 検索ボックスを取得してキーワードを入力
search_box = driver.find_element(By.NAME, "q")
search_box.send_keys("Python 自動化")

# Enter キーを送信
search_box.send_keys(Keys.RETURN)

# ページタイトルを表示
print(driver.title)

driver.quit()

要素の待機(WebDriverWait)

JavaScript で動的にコンテンツが読み込まれるページでは、要素が存在するまで待機する処理が必要です。

Python
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

driver = webdriver.Chrome()
driver.get("https://example.com")

# 最大10秒待って要素が表示されるまで待機
wait = WebDriverWait(driver, 10)
element = wait.until(
    EC.presence_of_element_located((By.ID, "result"))
)

print(element.text)

driver.quit()

time.sleep() で固定秒数を待つ方法もありますが、無駄な待機が発生します。WebDriverWait を使って「要素が現れたら即座に次の処理へ」進む書き方が推奨です。

Playwright の使い方

インストール

Playwright のインストールは2ステップです。

Bash
pip install playwright
playwright install

playwright install を実行すると Chromium・Firefox・WebKit の3ブラウザが一括でダウンロードされます。uv の場合は uv add playwright のあとに同じく playwright install を実行します。

ページを開いてタイトルを取得する

Playwright には同期 API(sync_playwright)と非同期 API(async_playwright)があります。入門としては同期 API が書きやすいのでこちらを使います。

Python
from playwright.sync_api import sync_playwright

with sync_playwright() as p:
    browser = p.chromium.launch()
    page = browser.new_page()

    # ページを開く
    page.goto("https://example.com")

    # タイトルを取得して表示
    print(page.title())  # Example Domain

    browser.close()

with ブロックを使うことでブラウザの後片付けが確実に行われます。Selenium と比べてコードがすっきりしているのが特徴です。

要素を取得してクリックする

Playwright では page.locator() で要素を指定します。Selenium の find_element() に相当する操作です。

Python
from playwright.sync_api import sync_playwright

with sync_playwright() as p:
    browser = p.chromium.launch()
    page = browser.new_page()

    page.goto("https://example.com")

    # CSS セレクタで要素を取得してクリック
    page.locator("a").click()

    print(page.url)

    browser.close()

テキストを入力してフォームを送信する

Playwright ではテキスト入力に page.fill()、クリックに page.click() を使います。待機処理は自動で行われるので、Selenium のような明示的な WebDriverWait は不要です。

Python
from playwright.sync_api import sync_playwright

with sync_playwright() as p:
    browser = p.chromium.launch()
    page = browser.new_page()

    page.goto("https://www.google.com")

    # 検索ボックスにテキストを入力
    page.fill("textarea[name='q']", "Python 自動化")

    # ボタンをクリック
    page.keyboard.press("Enter")

    # 検索結果が表示されるまで自動待機
    page.wait_for_load_state("networkidle")

    print(page.title())

    browser.close()

スクリーンショットを取得する

Playwright ではスクリーンショット取得が1行で書けます。ページ全体を画像として保存したいときに便利です。

Python
from playwright.sync_api import sync_playwright

with sync_playwright() as p:
    browser = p.chromium.launch()
    page = browser.new_page()

    page.goto("https://example.com")

    # ページ全体のスクリーンショットを保存
    page.screenshot(path="screenshot.png", full_page=True)

    browser.close()

Selenium と Playwright どちらを選ぶべきか

用途と状況によって使い分けるのが現実的です。

  • Selenium を選ぶ場合
    日本語情報が多く、既存の業務スクリプトとの互換性が必要なとき。ネット上のサンプルコードが Selenium ベースのものが多いため、初心者が躓いたときに情報を探しやすい
  • Playwright を選ぶ場合
    新規プロジェクトで書き心地と速度を重視するとき。自動待機・スクリーンショット・マルチブラウザテストなど、モダンな機能が最初から揃っている

僕自身は業務自動化スクリプトで Selenium を長く使ってきましたが、最近の新規スクリプトは Playwright で書くことが増えました。待機処理を自分で書かなくていい点が特にラクです。

「とりあえず動かしてみたい」という入門段階では、どちらを選んでも本記事のコードを試せます。まず動かしてみて、書き心地の合う方を選ぶのが一番です。

まとめ

本記事では Python のブラウザ自動化ライブラリ Selenium と Playwright の基本操作を解説しました。

  • Selenium:4.6 以降は ChromeDriver 不要・webdriver.Chrome() で即起動できる
  • Playwrightpip install playwright + playwright install の2ステップで完結・自動待機が便利
  • どちらも「ページを開く→要素を取得→クリック・入力」の流れは同じ
  • 新規プロジェクトなら Playwright・既存コードとの互換重視なら Selenium を選ぶとよい

ブラウザ自動化を覚えると、日常の繰り返し作業を大幅に削減できます。本記事のコードをそのまま実行してみるところから始めてみてください。

この記事が気に入ったら
フォローしてね!

シェア・記事の保存はこちら!

この記事を書いた人

コメント

コメントする

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)