Python×Selenium入門|ブラウザ自動操作・スクレイピングの基本

Python×Selenium入門|ブラウザ自動操作・スクレイピングの基本

PR Amazonのアソシエイトとして、ITナレッジライフは適格販売により収入を得ています。

記事の文字数:2,636

PythonとSeleniumを使ってブラウザを自動操作する方法を初心者向けにわかりやすく解説します。Selenium 4の最新の環境構築(WebDriverの自動管理対応)から、要素の取得、クリック、文字入力、待機処理、ヘッドレスモードまで具体的なコード例付きで紹介。

Pythonユーザにお勧めの本 ↗

初心者向け

1週間でPythonの基礎が学べる本

難易度
実用性
読みやすさ

「絶対に挫折させない」という著者の強い意志を感じる、プログラミングの「最初の1冊」としておすすめできる良書です。

人気

スッキリわかるPython入門 第2版 スッキリわかるシリーズ

難易度
実用性
読みやすさ

対話形式でスラスラ読める。複雑な概念もキャラクターが分かりやすく解説してくれます。

独習Python

難易度
実用性
網羅性

言語仕様を深く解説。なんとなく書ける状態から、自信を持って書ける状態へ引き上げてくれます。

Python1年生 第2版 体験してわかる!会話でまなべる!プログラミングのしくみ

難易度
実用性
読みやすさ

イラスト中心で、プログラミングの楽しさを教えてくれる。ワクワクしながら学べる入門書です。

Webブラウザの自動操作やスクレイピングを行う上で、PythonPython [パイソン]汎用プログラミング言語Seleniumの組み合わせは非常に強力です。なお、静的なHTMLHTML [エイチティーエムエル]HyperText Markup Language。Webページの構造を記述する言語を取得するだけなら、SeleniumよりHTTPHTTP [エイチティーティーピー]HyperText Transfer Protocol。Webでのデータ転送プロトコルクライアントやHTMLパーサーを利用したほうが効率的な場合があります。

本記事では、Pythonを使ったSeleniumの基本的な使い方を、初心者にもわかりやすく解説します。最新のSelenium 4に対応した記述方法で紹介するため、環境構築も非常にシンプルになっています。

Seleniumとは?

Selenium(セレニウム)は、Webブラウザの操作を自動化するためのフレームワークです。

もともとはWebアプリケーションの自動テストツールとして開発されましたが、現在では以下のような用途で広く利用されています。

  • Webスクレイピング: 定期的なデータ収集や自動情報取得
  • ルーティン作業の自動化: Webフォームへの自動入力や定期的なボタンクリック
  • 自動テスト: Webサイトの動作確認

Pythonと組み合わせることで、直感的かつ短いコードで高度なブラウザ操作を実現できます。

PythonでSeleniumを使う準備(環境構築)

最新のSelenium(バージョン4.6以降)では「Selenium Manager」という機能が搭載され、基本的には以前のように手動でChromeDriverなどをダウンロードしてパスを通す必要がなくなりました

必要なパッケージのインストール

まずはPython環境にSeleniumをインストールします。ターミナル(またはコマンドプロンプト)で以下のコマンドを実行してください。

Terminal window
pip install selenium

一般的な環境であれば、これだけで準備は完了です!

Python Seleniumの基本的な使い方

ここからは、実際にPythonでSeleniumを使ってブラウザを操作する基本的な手順を解説します。

1. ブラウザを起動してWebページを開く

まずはGoogle Chromeを起動し、指定したURLURL [ユーアールエル]Uniform Resource Locator。Webページのアドレス(今回はGoogleのトップページ)を開くコードです。

from selenium import webdriver
import time
# Chromeを起動
driver = webdriver.Chrome()
# Googleのトップページを開く
driver.get("https://www.google.com")
# 動作確認のため3秒待機
time.sleep(3)
# ブラウザを閉じる
driver.quit()

2. 要素を取得して操作する(文字入力・検索)

Webページ上の検索ボックスやボタンを操作するには、HTMLの要素(Element)を特定する必要があります。Seleniumでは By クラスを使って要素を指定します。

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
import time
driver = webdriver.Chrome()
driver.get("https://www.google.com")
# 検索ボックス(name属性が"q"の要素)を取得
search_box = driver.find_element(By.NAME, "q")
# 「Python Selenium」と入力
search_box.send_keys("Python Selenium")
# Enterキーを押して検索を実行
search_box.send_keys(Keys.RETURN)
time.sleep(3)
driver.quit()

3. スクリーンショットを撮る

スクレイピングやテストの記録として、表示されている画面のスクリーンショットを保存することも簡単です。

# 画面全体のスクリーンショットを保存
driver.save_screenshot("screenshot.png")

よく使う便利な操作一覧

Python×Seleniumでよく使われる操作メソッドをまとめました。

  • 要素のクリック: element.click()
  • テキストの取得: element.text
  • 属性(URLなど)の取得: element.get_attribute("href")
  • ブラウザを閉じる: driver.quit() (※driver.close()は現在アクティブなタブまたはウィンドウのみを閉じます)

待機処理(明示的な待機)

Webページ上の要素がまだ利用可能になっていない状態で操作しようとすると、エラーになることがあります。そこで WebDriverWait を使って、「特定の要素がDOMDOM [ドム]Document Object Model。HTMLの木構造の表現上に存在するまで待機する」処理を入れるのが一般的です。

from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
# "main"というIDを持つ要素が見つかるまで最大10秒間待機
WebDriverWait(driver, 10).until(
EC.presence_of_element_located((By.ID, "main"))
)

💡【ワンポイント・アドバイス】待機処理の混在は避けましょう

Seleniumには driver.implicitly_wait() という「暗黙的な待機」を設定する方法もありますが、上で紹介した WebDriverWait(明示的な待機)と混在させることは非推奨とされています。両方を同時に設定すると、タイムアウトの時間が予測不能になり、スクリプトの動作が不安定になる原因となります。基本的には、確実な制御ができる WebDriverWait(明示的な待機)に絞って利用することをおすすめします。

ヘッドレスモード(画面を表示せずに実行)

スクレイピングをバックグラウンドで実行したい場合、ブラウザの画面を表示しない「ヘッドレスモード」が便利です。GUIGUI [ジーユーアイ / グーイ]Graphical User Interface。グラフィカルな操作画面を表示しないため、サーバーなど画面を必要としない環境での自動化に適しています。

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
options = Options()
# ヘッドレスモードを有効化
options.add_argument('--headless=new')
# オプションを指定してドライバを起動
driver = webdriver.Chrome(options=options)
driver.get("https://www.google.com")
print(driver.title) # タイトルを取得して出力
driver.quit()

実践に向けた重要な注意点

Seleniumを使って自動化を進めるにあたり、いくつか気をつけておきたいポイントがあります。

1. スクレイピング目的で利用する際の法的・倫理的配慮

SeleniumをWebスクレイピングに利用する場合、対象サイトの利用規約(Terms of Service)やrobots.txtを確認し、サイト側が示しているアクセス方針を尊重してください。また、短時間に大量のアクセスを行うと相手先サーバーに負荷をかける可能性があるため、適切なアクセス頻度に抑えるなどの配慮が重要です。

2. Selenium Managerの環境依存

Selenium Managerによるドライバーの自動管理は非常に便利ですが、完全自動というわけではない場面もあります。Chrome 115以降ではChromeDriverの配布・バージョン情報の取得にChrome for Testingの仕組みが使われています。Selenium Managerがこれらを自動的に処理するため、通常はユーザーが個別に意識する必要はありません。ただし、プロキシやオフライン環境などでは追加設定が必要になる場合があります。

3. 対象サイトの仕様変更による要素指定エラー

上記のコードではGoogleの検索ボックスを By.NAME, "q" で指定していますが、対象となるWebサイトのUIUI [ユーアイ]User Interface。ユーザーとシステムの間で情報をやり取りする接点や画面やHTML構造は頻繁に変更されます。そのため、将来的にこのコードがそのままでは動かなくなるリスクがあります(これはSelenium自体の問題ではなく、対象サイトの仕様変更に起因するものです)。実際の開発では、対象サイトの最新のHTML構造をブラウザの開発者ツールで確認し、適切な要素指定を行ってください。

まとめ:Python Seleniumで自動化を始めよう

PythonとSeleniumを使えば、面倒な日常のブラウザ操作を簡単に自動化できます。

  1. pip install selenium でインストール
  2. webdriver.Chrome() でブラウザ起動(通常はドライバ設定不要)
  3. find_element で要素を見つけて操作

まずは簡単なスクリプトを書いてみて、自分の作業を自動化する便利さを体感してみてください!


以上で本記事の解説を終わります。
よいITライフを!
ITナレッジライフ 運営者
この記事を書いた人

Z (ITナレッジライフ)

現役のITエンジニア。Linux、プログラミング、IT用語など、日々の業務で得た「痒いところに手が届く」技術情報を発信しています。

プロフィールと編集ポリシーを見る

Pythonユーザにお勧めの本 ↗

初心者向け

1週間でPythonの基礎が学べる本

難易度
実用性
読みやすさ

「絶対に挫折させない」という著者の強い意志を感じる、プログラミングの「最初の1冊」としておすすめできる良書です。

人気記事


記事を評価

Thanks!
目次
Scroll to Top