【Python】ブラウザ操作を自動化する最強ライブラリは?SeleniumとPlaywrightを使い分ける

【Python】ブラウザ操作を自動化する最強ライブラリは?SeleniumとPlaywrightを使い分ける Python

こんにちはー!シミヅですっ!

毎日決まったサイトからデータを集めたり、テストのためにブラウザをポチポチ操作したり……。
「これ、全部自動でやってくれたらいいのにっ!」って思ったこと、ありませんか?

Pythonを使えば、ブラウザ操作の自動化なんてお手のものです。

でも、いざ調べ始めると「Seleniumがいい」とか「今はPlaywrightだ」とか、いろんな情報が出てきて「結局どれがいいのーっ!」って迷っちゃいますよね(笑)。

今日は、僕がAI開発の前処理やスクレイピングで使い倒しているライブラリたちの、現場でのリアルな使い分けを詳しくレクチャーしちゃいますねっ!

【執筆者の簡易プロフィール】
シミヅ 執筆者:シミヅ
  • 29歳男性、独身
  • Web開発や業務システムなどいろいろやった後、AIに強い興味を持ち、AI開発企業へ転職
  • 主な使用言語はPython
  • 趣味は「合コン」と「バスケ」

ブラウザ操作自動化のロードマップを把握する

Pythonでブラウザを動かすためのツールはいくつかありますが、大きく分けると「歴史と実績のSelenium」か「新進気鋭で超高速なPlaywright」の二択になります。

昔はSelenium一択だったんですけど、最近のモダンなWebサイト(ReactやVueでガリガリ作られたサイト)を相手にするなら、Playwrightの方がストレスなく書けることが多いんです。

それぞれの特徴をしっかり理解して、自分のやりたいことにぴったりのツールを選びましょうっ!

定番のSeleniumで手堅く自動化を始める

まずは王道のSelenium(セレニウム)です。

「ブラウザ操作といえばこれ!」というくらい有名で、情報がネットにごろごろ転がっているのが最大の強み。
困った時に調べればすぐ解決策が見つかるのは、開発者にとってめちゃくちゃ心強いですよねー。

昔はブラウザのバージョンに合わせた「WebDriver」を手動でダウンロードして……っていう面倒な作業があったんですけど、今はwebdriver-managerを使えばそのあたりの管理も全部自動でやってくれます!

from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager
from selenium.webdriver.common.by import By

ブラウザを起動するおまじない
service = Service(ChromeDriverManager().install())
driver = webdriver.Chrome(service=service)

指定したURLを開く
driver.get("https://www.google.com")

検索ボックスを見つけて「Python」と入力
search_box = driver.find_element(By.NAME, "q")
search_box.send_keys("Python")
search_box.submit()

print("検索完了っ!")

終わったらブラウザを閉じる
driver.quit()

このコードでは、まずwebdriver_managerがあなたのPCに入っているChromeにぴったりのドライバーを勝手に探してきてくれます。
あとは driver.get() でサイトを開いて、find_element で操作したいパーツ(要素)を見つけるだけ。

とってもシンプルですけど、Seleniumは「ページの読み込みが終わるのを待つ」っていう処理を自分でしっかり書かないと、要素が見つからなくてすぐエラーで止まっちゃうので、そこだけは注意が必要ですよ!

最新のPlaywrightなら面倒な「待ち」から解放される

僕が最近マジでおすすめしたいのが、Microsoftが開発しているPlaywright(プレイライト)ですっ!

これ、何がすごいかっていうと、「ボタンが表示されるまで待つ」みたいな処理をライブラリ側が勝手にやってくれる「オートウェイト機能」が標準装備されてるんですよ。

Seleniumで苦労してた「要素が見つからない問題」が、これを使うだけで嘘みたいに解決しちゃうことも多いんです。

from playwright.sync_api import sync_playwright

with sync_playwright() as p:
# ブラウザ(Chromium)を起動。headless=Falseにすると動きが見えるよ!
browser = p.chromium.launch(headless=False)
page = browser.new_page()

# サイトに移動
page.goto("
Google
(https://www.google.com)") # セレクターを使って検索窓に入力 page.fill('textarea[name="q"]', "Playwright Python") # Enterキーを叩く page.press('textarea[name="q"]', "Enter") # スクリーンショットを撮ってみるっ! page.screenshot(path="google_result.png") print("スクショ保存完了っ!") browser.close()

Playwrightは pip install playwright した後に playwright install コマンドを叩くだけで、専用のブラウザまで全部セットアップしてくれます。
コードもすごく直感的ですよね!

しかも、一つのブラウザで「iPhoneのふりをして動かす」みたいなデバイスエミュレーションも一瞬で設定できるので、スマホサイトのチェックなんかにも最高なんです。

ブラウザ操作を安定させるための極意

ブラウザ操作の自動化で、初心者が100%ハマるのが「さっきは動いたのに、今はエラーが出る」っていう不安定さです。
これを回避するために、絶対に time.sleep(5) みたいな「とりあえず待つ」っていうコードは書かないでください!

ネットワークが遅ければ5秒じゃ足りないし、早ければ5秒が無駄になっちゃいます。
これを「非効率の極み」と言わずして何と言うかっ!(笑)

Seleniumなら WebDriverWait を使い、Playwrightなら標準のオートウェイトに任せる。
「特定の状態になるまで待つ」という賢い待ち方をマスターすることが、プロの自動化への第一歩ですっ。

どっちを選ぶべき?AIエンジニアの視点

最後に、どっちを選べばいいかの判断基準をまとめてみました!

特徴 Selenium Playwright
学習コスト 低い(情報が豊富) 普通(少し新しい概念がある)
動作スピード 普通 速い(非同期処理が得意)
安定性 自分で制御が必要 高い(オートウェイトが優秀)
おすすめのケース 既存の資産がある、枯れた技術がいい 新規開発、モダンなサイトの自動化

僕個人としては、今から始めるならPlaywrightを推しますっ!
コードが綺麗に書けるし、何より動かしていて気持ちいいんですよねー。

まとめ:Pythonでブラウザを自由自在に操ろう

Pythonを使ったブラウザ操作について解説してきましたっ。

基本をしっかり学びたい、情報量重視ならSelenium。
爆速で安定した自動化を作りたいならPlaywright。
time.sleep は卒業して、賢く待つ。

ブラウザ操作が自動化できるようになると、世界が変わりますよっ!
面倒な単純作業はPython君に任せて、僕らはもっとクリエイティブな仕事(とか合コンの作戦会議とかっ!)に時間を使いましょうー。

まずは10行くらいのコードから、自分の好きなサイトを開くところから始めてみてくださいね。

それじゃあ、また次の記事でお会いしましょうー。シミヅでしたっ!

コメント

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