「毎日同じWebサイトにログインして、レポートをダウンロードする作業を自動化したい」「Pythonで、ブラウザに表示される情報を取り出したい」。業務の効率化に取り組む担当者やエンジニアから、こうした相談をよくいただきます。
Seleniumは、Pythonのプログラムからブラウザを操作し、人が行っているクリックや入力、情報の取得を自動化できるツールです。以前はブラウザに合わせたドライバーを手作業で用意する必要がありましたが、現在はその手間がなくなり、より手軽に使い始められるようになっています。
本記事では、2026年10月時点の公式の情報をもとに、SeleniumとPythonの環境づくりから、基本の使い方、ログインや表の取得などの実践的なコード例、よくあるエラーの対処法、使うときの注意点、ほかの方法との違いまでを整理します。業務の自動化への活かし方もあわせて紹介します。
| 確認したいポイント | 結論 | 詳細 |
| Seleniumとは? | ブラウザを自動で操作するためのツール | Pythonなどのプログラムから、ページを開く、文字を入力する、ボタンを押す、情報を取り出すといった操作を自動化できます。 |
| インストールは難しい? | pipで入れるだけで使い始められる | Python 3.10以上で「pip install selenium」を実行します。ブラウザ用のドライバーは自動で用意されます。 |
| 基本の使い方は? | 開く→要素を探す→操作する→閉じる | driver.getでページを開き、find_elementとByで要素を探して入力やクリックを行います。表示を待つ処理も入れておきます。 |
| 使うときの注意点は? | 利用規約の確認と画面変更への備え | 自動操作や情報の取得を禁止するサイトもあります。アクセスの間隔を空け、画面が変わったときに直せる体制も整えておきます。 |
この記事でわかること
- Seleniumでできることと、Pythonで使うメリット
- インストールからドライバーの準備、動作確認までの環境づくり
- 要素の指定、入力、クリック、待機などの基本の使い方とコード例
- よくあるエラーの原因と対処法、業務で使うときの注意点
- Playwrightやスクレイピングのライブラリなど、ほかの方法との使い分け
| 定型業務の自動化を検討している企業の方へ ネクストスケールでは、業務の棚卸しから自動化の仕組みづくり、システム開発、社員研修、現場への定着までを一気通貫で支援しています。支援内容や料金、導入事例をまとめた資料を無料でお送りします。 資料請求はこちら |
Seleniumとは
最初に、Seleniumがどのようなツールなのか、何ができるのかを確認しておきましょう。Seleniumの得意なことを知っておくと、ほかの方法と比べて自社の作業に合うかを判断しやすくなります。
ブラウザを自動で操作するためのツール
Seleniumは、PythonやJavaなどのプログラムからWebブラウザを操作するためのオープンソースのツールです。Chrome、Edge、Firefox、Safariなどの主要なブラウザに対応しています。
もともとはWebサイトやWebアプリが正しく動くかを自動でテストするために作られたツールですが、現在はテストだけでなく、Webサイトでの定型作業の自動化や、情報の収集にも広く使われています。
Pythonで使うメリット
Seleniumはさまざまなプログラミング言語に対応していますが、Pythonは文法がシンプルで、少ない行数で処理を書けるため、初めて自動化に取り組む人にも向いています。
また、Pythonにはデータの加工やExcel・CSVの操作、メールの送信などに使えるライブラリがそろっています。ブラウザから取り出した情報を集計してファイルに保存するといった、前後の処理まで1つのプログラムでまとめて自動化できるのが強みです。
さらに、Pythonは生成AIのAPIとも連携しやすいため、ブラウザから取り出した文章をAIで要約する、問い合わせの内容をAIで分類してから登録するといった、判断を含む作業の自動化にも広げられます。Seleniumを入り口に、業務全体の自動化を段階的に進めていけるのもPythonを選ぶ利点です。
Seleniumでできること
Seleniumを使うと、ページを開く、文字を入力する、ボタンやリンクをクリックする、表示された文字を取り出す、画面を保存するといった、人がブラウザで行う操作の多くを自動化できます。
たとえば、社内外のWebシステムにログインしてデータをダウンロードする、Webのフォームに大量のデータを入力する、商品の価格を定期的に確認する、Webアプリの動作を毎回同じ手順で確かめる、といった用途で活用されています。
SeleniumとPythonの環境づくり
ここからは、SeleniumをPythonで使うための準備を進めます。現在のSeleniumは、以前と比べて準備の手順が大きく簡単になっています。
Pythonを用意し、仮想環境を作る
まずはPythonをインストールします。公式の案内では、Seleniumが対応しているのはPython 3.10以上とされています。古いバージョンのPythonを使っている場合は、新しい安定版をインストールしましょう。
作業用のフォルダを作り、プロジェクトごとにライブラリを分けて管理するための仮想環境を作っておくと安心です。MacやLinuxでは次のコマンドで仮想環境を作成し、有効にします。Windowsでは「python -m venv .venv」のあとに「.venv\Scripts\activate」を実行します。
python3 -m venv .venv
source .venv/bin/activate
Seleniumをインストールする
仮想環境を有効にした状態で、次のコマンドを実行してSeleniumをインストールします。2026年10月時点のPython向けの最新の安定版は4.49.0です。
pip install -U selenium
インストールが終わったら、「pip show selenium」でバージョンを確認できます。Seleniumはバージョンアップの頻度が高いため、定期的に更新しておきましょう。
ドライバーはSelenium Managerが自動で用意する
Seleniumでブラウザを操作するには、ChromeDriverなどのブラウザごとの「ドライバー」が必要です。以前は、ブラウザのバージョンに合ったドライバーを自分でダウンロードし、場所を指定する必要がありました。
現在は、Selenium 4.6.0からSeleniumに同梱されている「Selenium Manager」が、必要なドライバーを自動で用意してくれます。古い記事にあるようなドライバーの手作業でのダウンロードや、webdriver-managerなどの追加のライブラリは、基本的に不要になりました。
動作を確認する
次のコードを「first.py」として保存し、「python first.py」で実行します。Chromeが起動してページが開き、ページのタイトルと見出しの文字が表示されれば、準備は完了です。
from selenium import webdriver
from selenium.webdriver.common.by import By
driver = webdriver.Chrome()
driver.get(“https://www.example.com”)
print(driver.title)
heading = driver.find_element(By.TAG_NAME, “h1”)
print(heading.text)
driver.quit()
最後の「driver.quit()」は、ブラウザを閉じて後片付けをする命令です。これを忘れると、ブラウザやドライバーのプロセスが残り続けることがあるため、必ず書くようにしましょう。
Seleniumの基本の使い方
ここでは、Seleniumでブラウザを操作するための基本の命令と考え方を紹介します。どれほど複雑な自動化も、基本はここで紹介する操作の組み合わせです。
ページを開いて閉じる
「webdriver.Chrome()」でブラウザを起動し、「driver.get(“URL”)」で指定したページを開きます。EdgeやFirefoxを使う場合は、「webdriver.Edge()」「webdriver.Firefox()」のように書き換えます。
ページを移動したあとは、「driver.title」でページのタイトル、「driver.current_url」で現在のURLを確認できます。作業が終わったら「driver.quit()」でブラウザを閉じます。
操作したい要素を探す
入力欄やボタンなど、ページの中の操作したい部品(要素)は、「find_element」と「By」を組み合わせて指定します。指定の方法にはいくつかの種類があり、主なものは次のとおりです。
| 指定の方法 | 書き方の例 | 使う場面 |
|---|---|---|
| ID | By.ID, “email” | 要素に固有のidが付いているとき(最も確実) |
| name属性 | By.NAME, “q” | 入力欄など、name属性が付いているとき |
| CSSセレクタ | By.CSS_SELECTOR, “button[type=submit]” | クラスや属性を組み合わせて指定したいとき |
| XPath | By.XPATH, “//table/tbody/tr” | 階層の関係をたどって指定したいとき |
| クラス名 | By.CLASS_NAME, “price” | 1つのクラス名で指定できるとき |
| タグ名 | By.TAG_NAME, “h1” | 見出しや表など、タグの種類で指定したいとき |
| リンクの文字 | By.LINK_TEXT, “お問い合わせ” | リンクの文字をそのまま使って指定したいとき |
要素のidやクラス名は、ブラウザの開発者ツールで確認できます。idが付いている要素はidで、ない場合はCSSセレクタで指定するのが基本です。条件に合う要素をすべて取り出したい場合は「find_elements」を使うと、要素のリストが返されます。
文字の取得・入力・クリック
要素を見つけたら、「.text」で表示されている文字の取得、「send_keys」で文字の入力、「click」でクリックができます。入力欄の文字を消したいときは「clear」を使います。
リンクや画像のURLなど、属性の値を取り出したい場合は「get_attribute(“href”)」のように書きます。これらの操作を組み合わせるだけで、多くの定型作業を自動化できます。
要素が表示されるまで待つ
ページの表示には時間がかかるため、読み込みが終わる前に要素を探すとエラーになります。そこで、「WebDriverWait」を使って、要素が表示されるまで最大で指定した秒数だけ待つ「明示的な待機」を入れます。
「time.sleep」で決まった秒数だけ止める方法もありますが、待ちすぎて処理が遅くなったり、逆に待ち時間が足りなかったりします。必要な条件が満たされるまで待つ明示的な待機を使うのが基本です。具体的な書き方は、次の章のコード例で紹介します。
画面を保存する
「driver.save_screenshot(“result.png”)」と書くと、その時点のブラウザの画面を画像として保存できます。自動操作の結果の記録や、エラーが起きたときの原因の確認に役立ちます。
特定の要素だけを保存したい場合は、要素に対して「screenshot」を使うこともできます。定期的に実行する自動化では、処理の節目ごとに画面を保存しておくと、トラブルの調査が楽になります。
実践的なコード例
基本の操作を組み合わせて、業務でよく使われる処理を作ってみましょう。ここで紹介するコードのURLや要素のidは例のため、実際に使う際は対象のサイトに合わせて書き換えてください。
ログインして画面を操作する
次のコードは、ログイン画面でメールアドレスとパスワードを入力してログインし、ログイン後の画面を保存する例です。パスワードはコードに直接書かず、環境変数から読み込むようにしています。
import os
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()
wait = WebDriverWait(driver, 10)
try:
driver.get(“https://www.example.com/login”)
email = wait.until(EC.presence_of_element_located((By.ID, “email”)))
email.send_keys(os.environ[“LOGIN_EMAIL”])
driver.find_element(By.ID, “password”).send_keys(os.environ[“LOGIN_PASSWORD”])
driver.find_element(By.CSS_SELECTOR, “button[type=’submit’]”).click()
wait.until(EC.url_contains(“dashboard”))
driver.save_screenshot(“dashboard.png”)
finally:
driver.quit()
「wait.until」の部分が明示的な待機で、メールアドレスの入力欄が表示されるまで、またログイン後のページに移るまで最大10秒待ちます。「try」と「finally」を使うことで、途中でエラーが起きてもブラウザを必ず閉じられるようにしています。
ページの表をCSVファイルに保存する
次のコードは、ページに表示されている表の内容を1行ずつ取り出し、CSVファイルに保存する例です。Excelで開いたときに文字化けしないよう、文字コードに「utf-8-sig」を指定しています。
import csv
from selenium import webdriver
from selenium.webdriver.common.by import By
driver = webdriver.Chrome()
try:
driver.get(“https://www.example.com/report”)
rows = driver.find_elements(By.CSS_SELECTOR, “table tr”)
with open(“report.csv”, “w”, newline=””, encoding=”utf-8-sig”) as f:
writer = csv.writer(f)
for row in rows:
cells = row.find_elements(By.CSS_SELECTOR, “th, td”)
writer.writerow([cell.text for cell in cells])
finally:
driver.quit()
取り出したデータは、Pythonのpandasなどのライブラリを使って集計したり、Excelのファイルに書き出したりすることもできます。ブラウザでの作業と、その後のデータの加工をまとめて自動化できるのがPythonの強みです。
画面を表示せずに動かす(ヘッドレスモード)
サーバーで定期的に実行する場合などは、ブラウザの画面を表示せずに動かす「ヘッドレスモード」が便利です。Chromeの場合は、次のようにオプションを指定してブラウザを起動します。
from selenium import webdriver
options = webdriver.ChromeOptions()
options.add_argument(“–headless=new”)
options.add_argument(“–window-size=1280,1024”)
driver = webdriver.Chrome(options=options)
画面の大きさによってページの表示が変わるサイトもあるため、ウィンドウの大きさもあわせて指定しておくと動作が安定します。うまく動かない場合は、いったん画面を表示する状態に戻して動きを確認しましょう。
| Webでの定型作業を自動化したい方へ 自動化したい作業の内容を伺い、Selenium、RPAツール、APIでの連携など、最適な方法と進め方を無料でご提案します。オンラインで30分からご相談いただけます。 相談予約はこちら |
よくあるエラーと対処法
Seleniumを使い始めると、いくつかの典型的なエラーに出会います。ここでは、初心者がつまずきやすい5つのエラーと対処法を紹介します。
要素が見つからない(NoSuchElementException)
最も多いエラーで、指定した要素がページの中に見つからないときに発生します。指定の方法が誤っている、ページの読み込みが終わっていない、要素が別の枠(iframe)の中にある、といった原因が考えられます。
まずは開発者ツールでidやセレクタが正しいかを確認し、明示的な待機を入れましょう。iframeの中の要素を操作する場合は、「driver.switch_to.frame」で枠を切り替えてから要素を探す必要があります。
待っても条件が満たされない(TimeoutException)
明示的な待機で指定した時間内に、要素が表示されない、ページが移動しないなど、条件が満たされなかったときに発生します。待機の条件の指定が誤っているか、ページの動きが想定と違っている可能性があります。
エラーが起きた時点の画面を保存して、実際にどのような画面になっているかを確認すると原因を見つけやすくなります。ログインに失敗している、確認のポップアップが表示されているといったことがよくあります。
古い書き方でエラーになる
インターネット上の古い記事では、「find_element_by_id」のような書き方が紹介されていることがあります。こうした書き方は現在のSelenium 4では使えなくなっており、エラーになります。
現在は「find_element(By.ID, “email”)」のように、Byを使った書き方に統一されています。古いコードを参考にする場合は、書き方を置き換えて使いましょう。
ブラウザを起動できない
ブラウザが起動しない場合は、ブラウザとドライバーのバージョンが合っていない、ネットワークの制限でドライバーを取得できないといった原因が考えられます。
通常はSelenium Managerが自動で対応しますが、社内のネットワークで外部への接続が制限されている場合は、ドライバーを取得できないことがあります。その場合は、情報システムの担当者に確認するか、ドライバーの場所を指定する方法を検討します。古いwebdriver-managerを使っている場合は、使わない形に書き換えると解決することもあります。
クリックできない・要素が古くなる
ほかの要素が重なっていてクリックできない場合や、ページの更新によって、一度取得した要素が使えなくなる場合にもエラーが起きます。
クリックできない場合は、要素がクリックできる状態になるまで待つ条件を使うか、画面をスクロールしてから操作します。要素が古くなった場合は、ページが更新された後にもう一度要素を探し直しましょう。
Seleniumを使うときの注意点
Seleniumは便利なツールですが、使い方を誤ると、相手のサイトに迷惑をかけたり、トラブルにつながったりすることがあります。ここでは、業務で使う前に押さえておきたい4つの注意点を紹介します。
利用規約とrobots.txtを確認する
Webサイトによっては、利用規約で自動での操作や情報の取得を禁止していることがあります。情報を取得する前に、対象のサイトの利用規約と、自動で巡回するプログラム向けのルールを示した「robots.txt」を確認しましょう。
取得した情報の使い方にも注意が必要です。他人の著作物をそのまま転載したり、取得した個人情報を目的外に利用したりすることは避けましょう。判断に迷う場合は、法務の担当者や専門家に確認することをおすすめします。
アクセスの間隔を空ける
プログラムは人よりもはるかに速く操作できるため、短い間隔で大量にアクセスすると、相手のサーバーに大きな負荷をかけてしまいます。ページを移動するごとに数秒の間隔を空けるなど、相手のサイトに配慮した設計にしましょう。
取得する情報やアクセスの回数は、必要な範囲に絞ることが大切です。APIが提供されているサービスであれば、Seleniumではなく、APIを使うことを優先しましょう。
画面の変更で動かなくなることを前提にする
Seleniumは画面の構造をもとに操作するため、対象のサイトの画面やHTMLが変わると、自動化が動かなくなることがあります。これは避けられないため、止まったときにすぐ気づき、直せる体制を整えておくことが大切です。
エラーが起きたら担当者に通知する、エラーの時点の画面を保存しておく、要素の指定をまとめて管理して直しやすくするといった工夫をしておきましょう。本番で使う前に検証する考え方は、ステージング環境とは?本番・開発・テスト環境との違いと構築時の注意点を解説も参考にしてください。
関連記事:ステージング環境とは?本番・開発・テスト環境との違いと構築時の注意点を解説
IDやパスワードを安全に管理する
ログインを伴う自動化では、IDやパスワードをプログラムに直接書き込まず、環境変数などで安全に管理しましょう。プログラムを共有したときに、認証の情報が漏れてしまうのを防げます。
また、業務で使うシステムの自動化は、情報システムの担当者の許可を得たうえで行いましょう。二段階認証が必要なシステムや、自動での操作が禁止されている社内のシステムもあります。
| 業務の自動化を安全に進めたい方へ ネクストスケールの支援内容や業務自動化の進め方、料金プラン、導入事例をまとめた資料をご用意しています。社内での検討資料としてもご活用ください。 資料請求はこちら |
Seleniumとほかの方法の使い分け
Webでの作業の自動化や情報の取得には、Selenium以外にもいくつかの方法があります。目的に合った方法を選ぶことで、作る手間や保守の負担を減らせます。主な方法の違いは次のとおりです。
| 方法 | 特徴 | 向いている用途 |
|---|---|---|
| Selenium | 実際のブラウザを操作でき、対応する言語やブラウザが多い | ログインや画面操作を伴う作業、ブラウザでのテスト |
| Playwright | 待機の処理が組み込まれ、動作が安定しやすい新しいツール | 新しく作るブラウザの自動化やテスト |
| Requests+Beautiful Soup | ブラウザを使わずにページのHTMLを取得して解析する | ログイン不要で、JavaScriptを使わないページの情報収集 |
| 公式のAPI | サービスが用意したデータ取得の仕組みを使う | APIが提供されているサービスとのデータ連携 |
| RPAツール | 画面の操作を記録し、プログラミングなしで自動化できる | 現場の担当者が自分で作って運用したい定型作業 |
Playwrightとの違い
Playwrightは、Microsoftが中心となって開発しているブラウザの自動化ツールで、Pythonからも使えます。要素の表示を自動で待つ仕組みが組み込まれており、動作が安定しやすいのが特長です。
Seleniumは歴史が長く、情報の量が多いことや、対応する言語やブラウザの幅広さが強みです。これから新しく作る場合はPlaywrightも候補に入れ、既存のSeleniumの資産がある場合や、情報の多さを重視する場合はSeleniumを選ぶとよいでしょう。
ブラウザを使わないスクレイピングとの違い
ログインが不要で、ページのHTMLに情報がそのまま含まれている場合は、RequestsとBeautiful Soupを使って、ブラウザを起動せずに情報を取得するほうが速く、軽く動かせます。
一方で、JavaScriptで後から内容が表示されるページや、ボタン操作が必要なページでは、ブラウザを実際に動かすSeleniumが向いています。まずは軽い方法で取得できないかを確かめ、難しい場合にSeleniumを使うのが効率的です。
APIやRPAツールを優先すべき場面
対象のサービスがAPIを提供している場合は、画面を操作するよりもAPIを使うほうが速く安定して動き、画面の変更の影響も受けません。データの連携が目的であれば、まずAPIの有無を確認しましょう。
また、プログラミングができる担当者がいない現場では、画面の操作を記録して自動化できるRPAツールのほうが、運用を続けやすいこともあります。RPAの考え方や選び方は、RPAで業務効率化を実現するには?導入メリット・活用事例・ツール選びと注意点を解説で紹介しています。
関連記事:RPAで業務効率化を実現するには?導入メリット・活用事例・ツール選びと注意点を解説
Seleniumを業務の自動化に活かすには
最後に、Seleniumを業務の自動化に活かすための考え方と、生成AIを使って開発を効率化する方法を紹介します。作って終わりではなく、使い続けられる仕組みにすることが大切です。
業務での活用例
Seleniumは、取引先のWebシステムからの請求データのダウンロード、社内のWebシステムへのデータの登録、競合の商品の価格の確認、Webアプリの動作確認など、さまざまな業務で活用されています。
毎日や毎週、決まった手順で繰り返している作業ほど、自動化の効果は大きくなります。まずは時間がかかっている作業を書き出し、自動化の候補を洗い出してみましょう。
自動化に向く作業と向かない作業
Seleniumでの自動化に向いているのは、手順が毎回同じで、判断がほとんど必要なく、繰り返しの回数が多い作業です。たとえば、決まった画面から決まったデータをダウンロードする作業や、手元の一覧の内容を1件ずつフォームに入力する作業などが当てはまります。
一方で、画面の内容を見てその都度判断が必要な作業や、月に1回しか発生しない作業、対象のサイトの画面が頻繁に変わる作業は、作る手間や直す手間のほうが大きくなりがちです。自動化で減らせる時間と、作成や保守にかかる時間を比べて、優先順位を決めることが大切です。
生成AIでコードの作成を効率化する
ChatGPTやClaudeなどの生成AIに、自動化したい作業の手順と、対象のページの要素の情報を伝えると、Seleniumのコードのたたき台を作ってもらうことができます。エラーの内容を伝えて、原因と修正の方法を相談するのにも役立ちます。
ただし、生成AIは古い書き方のコードを提案することもあります。前の章で紹介したように、find_element_by_idなどの古い書き方が含まれていないかを確認し、必ず実際に動かして結果を確かめましょう。社員が生成AIを業務で使いこなせるよう、生成AI活用研修などで基礎をそろえておくのも効果的です。
定期実行と運用の体制を整える
作った自動化は、タスクスケジューラやcronなどで決まった時刻に実行し、エラーが起きたら担当者に通知する仕組みにしておくと、安心して任せられます。
対象のサイトの画面が変わったときに誰が直すのか、作った人がいなくなったときにどう引き継ぐのかも決めておきましょう。業務全体の自動化を設計から任せたい場合は、ネクストスケールのAI業務自動化・GAS開発の支援内容も参考にしてください。
| 自動化の仕組みを社内に定着させたい方へ 自動化する作業の選定から、開発、定期実行と監視の仕組みづくり、社員向けの研修まで、業務の自動化の定着を伴走して支援します。お気軽にご相談ください。 相談予約はこちら |
まとめ|SeleniumとPythonでブラウザの作業を自動化しよう
Seleniumは、Pythonのプログラムからブラウザを操作し、ページを開く、入力する、クリックする、情報を取り出すといった作業を自動化できるツールです。現在はPython 3.10以上の環境で「pip install selenium」を実行するだけで、ドライバーもSelenium Managerが自動で用意してくれます。
基本は、ページを開き、Byで要素を探し、明示的な待機を入れながら操作し、最後にブラウザを閉じるという流れです。利用規約の確認やアクセスの間隔、画面の変更への備え、認証の情報の管理にも注意しながら、APIやRPAツールなどほかの方法とも使い分けて、業務の自動化に活かしていきましょう。公式の情報はSeleniumの公式ドキュメント(Python)で確認できます。
ネクストスケールでは、業務の棚卸しから、AIや自動化の仕組みづくり、システム開発、社員研修、現場への定着までを一気通貫で支援しています。開発を任せたい場合はAIシステム開発、活用の進め方から相談したい場合はAIコンサル・AX伴走支援のページもご覧ください。
AIコンサル・AX伴走支援サービスご紹介資料
この資料でこんなことがわかります!
- 社外AI役員とは
- 支援内容
- 導入の進め方
- 導入実績・効果
\3ステップで簡単入力/
| 業務の自動化を一緒に進めませんか 自動化する業務の洗い出しから、SeleniumやRPA、AIを使った仕組みの設計・開発、運用の体制づくりまでをご支援します。しつこい営業はいたしませんので、まずは無料相談をご利用ください。 相談予約はこちら |




