カテゴリ: Python 更新日: 2026/07/21

PythonでSeleniumを使ったWebスクレイピングの実践方法!初心者向け完全ガイド

PythonでSeleniumを使ったWebスクレイピングの実践方法
PythonでSeleniumを使ったWebスクレイピングの実践方法

先生と生徒の会話形式で理解しよう

生徒

「最近よく聞く『Webスクレイピング』をPythonでやってみたいんですけど、難しそうで不安です。パソコン初心者でもできますか?」

先生

「大丈夫ですよ!Pythonには『Selenium(セレニウム)』という、ブラウザを自動で動かしてくれる魔法のような道具があります。これを使えば、人間がマウスで操作するようにデータを集めることができるんです。」

生徒

「ブラウザが勝手に動くんですか?面白そう!具体的に何を準備して、どうやってプログラムを書けばいいのか教えてください!」

先生

「まずは基本の仕組みと準備から、一歩ずつ丁寧に解説していきますね。プログラミング未経験の方でも動かせるよう、簡単な例から見ていきましょう!」

1. WebスクレイピングとSeleniumの基本を知ろう

1. WebスクレイピングとSeleniumの基本を知ろう
1. WebスクレイピングとSeleniumの基本を知ろう

Webスクレイピングとは、インターネット上のWebサイトから特定の情報を自動的に抜き出す技術のことです。例えば、通販サイトの商品価格を毎日チェックして記録したり、ニュースサイトの見出しを一覧にしたりすることができます。本来なら人間が一つずつコピー&ペーストする作業を、プログラムが代わりに一瞬で終わらせてくれるのです。

今回学習するSelenium(セレニウム)は、数あるスクレイピングツールの中でも「ブラウザ操作の自動化」に特化したライブラリです。Google ChromeやMicrosoft Edgeなどのブラウザを、プログラムから直接操ることができます。ボタンをクリックしたり、検索窓に文字を入力したりといった、人間らしい動きを再現できるのが最大の特徴です。

初心者にSeleniumがおすすめな理由は、実際の画面が動いている様子を確認できるため、何が起きているか理解しやすい点にあります。まるで透明人間がパソコンを操作しているような感覚で、楽しく学習を進められますよ。

2. PythonとSeleniumを使うための準備(環境構築)

2. PythonとSeleniumを使うための準備(環境構築)
2. PythonとSeleniumを使うための準備(環境構築)

プログラミングを始めるには、まず道具を揃える必要があります。これを「環境構築(かんきょうこうちく)」と呼びます。まずはPythonがインストールされていることを確認し、次にSeleniumという部品を追加します。

コマンドプロンプトやターミナルという、パソコンに命令を出す画面を開いて、以下の魔法の言葉を入力しましょう。これは「Seleniumという道具を持ってきて!」という指示になります。


# Seleniumをインストールするコマンド(これをターミナルで実行します)
pip install selenium

また、Seleniumでブラウザを動かすためには「WebDriver(ウェブドライバー)」という橋渡し役のソフトが必要です。最近のSelenium 4というバージョンでは、このドライバーを自動で管理してくれる機能が備わっているので、以前よりも格段に準備が楽になりました。最新版のSeleniumを使うようにしましょう。

3. はじめての自動操作!ブラウザを起動してみよう

3. はじめての自動操作!ブラウザを起動してみよう
3. はじめての自動操作!ブラウザを起動してみよう

準備ができたら、実際にブラウザを自動で開くプログラムを書いてみましょう。ここではGoogle Chromeを例にします。ライブラリを読み込む(import)という作業をしてから、ブラウザを立ち上げる命令を出します。


from selenium import webdriver
from selenium.webdriver.chrome.service import Service

# Chromeブラウザを起動する
driver = webdriver.Chrome()

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

# 5秒間そのままにして動きを確認する
import time
time.sleep(5)

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

上記のコードを実行すると、勝手にChromeが立ち上がり、Googleのトップページが表示されます。そして5秒経つと自動で閉じます。driver.get()は「指定した住所(URL)へ行って!」という命令です。driver.quit()は「お仕事終了、ブラウザを閉じて」という意味になります。これだけで、自動化の第一歩は成功です!

4. Webサイトの要素を特定する「セレクタ」の考え方

4. Webサイトの要素を特定する「セレクタ」の考え方
4. Webサイトの要素を特定する「セレクタ」の考え方

特定の情報を抜き出すには、Webサイトのどの部分を狙うかを指定しなければなりません。これを「要素の特定」と言います。WebサイトはHTMLという言語で書かれており、見出しには<h1>、リンクには<a>といったタグがついています。

Seleniumでは、主に「ID」や「クラス名」、「XPath(エックスパス)」という住所のようなものを使って場所を特定します。初心者のうちは、By.NAMEBy.IDを使うのが分かりやすくておすすめです。これらは、タグの中に書かれた名前や背番号のようなものだと考えてください。


from selenium.webdriver.common.by import By

# 例えば「search_box」という名前がついた入力欄を探す場合
# element = driver.find_element(By.NAME, "search_box")

場所を探すときは、ブラウザの「検証モード(F12キーを押すと出てくる画面)」を使って、対象のコードを確認する習慣をつけましょう。宝探しのように、目的のデータがどこにあるかを探るのがスクレイピングの醍醐味です。

5. 検索窓に文字を入力してボタンをクリックする方法

5. 検索窓に文字を入力してボタンをクリックする方法
5. 検索窓に文字を入力してボタンをクリックする方法

次は、実際にサイトを操作してみましょう。検索窓にキーワードを入力して、検索ボタンを押すという流れを作ります。これは「自動ログイン」や「自動検索」に応用できる非常に重要な技術です。


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")

# 検索ボックスを探す(Googleの場合は名前が 'q' です)
search_box = driver.find_element(By.NAME, "q")

# 「Python スクレイピング」と入力する
search_box.send_keys("Python スクレイピング")

# エンターキーを押して検索実行!
search_box.send_keys(Keys.ENTER)

time.sleep(3)
driver.quit()

send_keys()はキーボードで文字を打つ操作、Keys.ENTERはエンターキーを叩く操作を指します。これを組み合わせれば、人間が手で行う検索作業をプログラムが勝手に代行してくれます。実行結果として、検索結果画面が表示されるはずです。

6. Webサイトからテキストデータを取得して保存する

6. Webサイトからテキストデータを取得して保存する
6. Webサイトからテキストデータを取得して保存する

操作ができるようになったら、いよいよデータの「抽出(ちゅうしゅつ)」です。Webサイト上のテキスト(文字)を読み取って、画面に表示させてみましょう。複数の項目を一度に取得したい場合は、find_elements(最後にsがつく)を使います。


# 検索結果の見出し(h3タグ)をすべて取得する例
titles = driver.find_elements(By.TAG_NAME, "h3")

for title in titles:
    # 取得した要素の中から文字だけを取り出して表示
    print(title.text)

textというプロパティを使うと、HTMLタグを除いた純粋な文字だけを取り出すことができます。これをリストに保存したり、CSVファイルやExcelファイルに書き出したりすれば、立派なデータ収集ツールの完成です。毎日手動でメモしていた株価や天気予報も、これですべて自動化できてしまいますね。

7. スクレイピングをする時の大切なマナーと注意点

7. スクレイピングをする時の大切なマナーと注意点
7. スクレイピングをする時の大切なマナーと注意点

Webスクレイピングは非常に便利な技術ですが、守らなければならないルールがあります。これを無視すると、相手のサーバーに負担をかけてしまったり、法律に触れてしまったりする恐れがあります。

まず、「短時間に大量のアクセスをしない」ことです。プログラムは人間よりもはるかに速くサイトを読み込めるため、1秒間に何十回もアクセスすると、サイトを攻撃しているとみなされることがあります。必ずtime.sleep(1)などを使って、1回操作するごとに少し休憩を挟むようにしましょう。

また、サイトの利用規約でスクレイピングを禁止している場合もあります。特に個人情報や著作権に関わるデータの取り扱いには十分注意が必要です。マナーを守って、正しく安全に技術を活用することが、エンジニアとしての第一歩です。

8. 待機処理(ウェイト)をマスターしてエラーを防ごう

8. 待機処理(ウェイト)をマスターしてエラーを防ごう
8. 待機処理(ウェイト)をマスターしてエラーを防ごう

初心者が一番最初につまずくのが、「要素が見つかりません」というエラーです。これは、プログラムの処理速度がブラウザの読み込み速度よりも速すぎるために起こります。ページが表示される前に「データを探せ!」と命令してしまうため、失敗するのです。

これを解決するのが「待機(たいき)」という処理です。ただ秒数を指定して休むだけでなく、「特定の要素が表示されるまで待つ」という賢い待ち方(Explicit Wait)もあります。これを使うと、ネットの速度が遅いときでも柔軟に対応できる、壊れにくいプログラムになります。


from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

# 最大10秒間、指定した要素が現れるまで待機する
wait = WebDriverWait(driver, 10)
element = wait.until(EC.presence_of_element_id_located((By.ID, "target-id")))

このように、エラーに対処する方法を少しずつ覚えていくことで、より複雑なサイトの自動化にも挑戦できるようになります。最初は難しく感じるかもしれませんが、パズルを解くような感覚で取り組んでみてください。

まとめ

まとめ
まとめ

今回はPythonとSeleniumを使ったWebスクレイピングの基本から実践的な使い方までを丁寧に学びました。Webスクレイピングはインターネット上の情報を自動で取得する技術であり、データ収集や分析を効率化するために欠かせない重要なスキルです。特にSeleniumはブラウザ操作をそのまま自動化できるため、初心者でも視覚的に理解しやすく、実際の操作に近い形でプログラムを組める点が大きな特徴です。

環境構築ではPythonとSeleniumのインストールを行い、WebDriverの仕組みを理解しました。これにより、プログラムからブラウザを自由に操作できるようになります。ブラウザの起動や指定したURLへのアクセスは、スクレイピングの基本となる重要な処理です。この段階をしっかり理解しておくことで、その後の応用がスムーズになります。

要素の特定ではIDや名前やタグといったセレクタの考え方を学びました。WebページはHTML構造でできているため、どの部分からデータを取得するのかを正しく指定することが重要です。検証ツールを使って要素を確認する習慣を身につけることで、効率よく目的のデータにたどり着けるようになります。

また検索処理やクリック操作などの自動化は、Seleniumの最も強力な機能の一つです。検索窓に文字を入力しエンターキーを押すという一連の流れをプログラムで再現できることで、日常の作業を大幅に効率化できます。これらの基本操作はログイン処理やフォーム入力など、様々な場面で応用できます。

データ取得ではテキスト情報を取得して表示する方法を学びました。find_elementsを使うことで複数のデータをまとめて取得できるため、ニュース一覧や商品情報の収集などに活用できます。取得したデータはファイルに保存することで分析や加工にも利用できるため、実務でも非常に役立つスキルとなります。

さらにスクレイピングにおけるマナーや注意点も重要なポイントです。短時間に大量のアクセスを行わないことや利用規約を守ることは、技術を安全に活用するために必須です。適切な間隔で処理を行うことで、サーバーへの負担を減らし安定したプログラムを実現できます。

待機処理についても理解することで、エラーを防ぎ安定した動作を実現できます。ページの読み込みが完了する前に処理を行うとエラーが発生するため、要素が表示されるまで待つ仕組みは実務において非常に重要です。Explicit Waitを使うことで、より柔軟で強固なプログラムを書くことができます。

これらの内容を総合すると、PythonとSeleniumによるWebスクレイピングは初心者でも段階的に習得できる実用的な技術であることが分かります。基本操作を繰り返し練習しながら理解を深めることで、自分だけの自動化ツールを作ることができるようになります。

サンプルコードで復習


from selenium import webdriver

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

title = driver.title
print(title)

driver.quit()

from selenium.webdriver.common.by import By

elements = driver.find_elements(By.TAG_NAME, "h1")

for e in elements:
    print(e.text)

import time

driver.get("https://example.com")
time.sleep(2)
print("ページ読み込み完了")
先生と生徒の振り返り会話

生徒

「PythonとSeleniumでブラウザが動くのはとても面白かったです」

先生

「実際の操作と同じように動くので理解しやすいですね」

生徒

「要素の探し方や待機処理が重要だと分かりました」

先生

「そこが安定したスクレイピングのポイントになります」

生徒

「これからは自分でデータ収集ツールを作ってみたいです」

先生

「基本を繰り返し練習すれば必ずできるようになります」

コメント
コメント投稿は、ログインしてください

まだ口コミはありません。

関連記事:
Python のWebスクレイピングの記事一覧へ
新着記事
New1
Python
Pythonの変数とは?定義方法とデータ型を初心者向けに解説
New2
PHP
PHP の型変換を完全ガイド!初心者でもわかる明示的変換・自動変換
New3
PHP
PHPのCSVファイルの読み書きと文字列処理を基礎から解説!初心者向けガイド
New4
PHP
PHPのメモリ管理と変数の破棄方法をやさしく解説!初心者でもわかるunsetの使い方
人気記事
No.1
Java&Spring記事人気No1
Python
PythonでAPIリクエストを送信する方法を完全解説!requestsライブラリで簡単API通信
No.2
Java&Spring記事人気No2
Python
Pythonで経過時間を計測する方法を完全解説!初心者でもわかる time.perf_counter() と time.sleep()
No.3
Java&Spring記事人気No3
Python
Pythonのコンストラクタ(__init__)の使い方!初心者でもわかるオブジェクトの初期化
No.4
Java&Spring記事人気No4
PHP
PHPの配列をソートする方法!sort, rsort, asort, ksortの使い方を丁寧に解説します!
No.5
Java&Spring記事人気No5
PHP
PHP のフォームデータの受け取り($_POST, $_GET)を完全解説!初心者向けガイド
No.6
Java&Spring記事人気No6
Python
Pythonのタプルの要素を変更できない理由とその回避策を初心者向けに解説
No.7
Java&Spring記事人気No7
ChatGPT
ChatGPTでPythonコードを作成する方法!プロンプトの書き方と質問例を解説
No.8
Java&Spring記事人気No8
Python
Pythonのrequestsライブラリ完全入門!HTTPリクエストの送り方を初心者向けにやさしく解説