【業務自動化】チャプター4-3:動的ページをスクレイピングしよう

ながみえ
本記事には広告(アフィリエイトリンク)が含まれます。リンク経由で申込が発生した場合、当サイトが報酬を受け取る可能性があります。

一つ前のページでは 静的ページのスクレイピング について学習しました。

今回は 動的ページのスクレイピング について見ていきましょう。

Chapter1:PythonでExcelを操作しよう
Chapter2:PyInstallerで自動化ツールを(.exe)作ろう
Chapter3:便利な自動化ツールを5つ作ろう
Chapter4:Webスクレイピング入門
 ・Chapter4-1:Webスクレイピングとは何か
 ・Chapter4-2:静的ページをスクレイピングしよう
 ・Chapter4-3:動的ページをスクレイピングしよう ◁今回はここ
Chapter5:自動化ツールを作って稼ごう

動的ページとは、JavaScriptによって表示内容が後から生成されたり、ボタン操作やスクロールで新しい情報が読み込まれたりするページのことです。

このタイプのページは、前回学習した requestsBeautifulSoup だけでは正しく情報を取得できません。

この記事では、Pythonのライブラリ Selenium を使い、実際に動的ページからニュース見出しを収集し、さらに「新しい見出しだけをExcelに追加する差分更新処理」を実装します。

最終的な目標は「動的に変化するWebページから必要なデータを効率的に収集・管理する」ことです。

本記事は前半は無料後半は会員向けの有料記事です。
業務自動化の全ての記事セットが今だけ 2980円 ⇒ 1980円。
どこよりも安いこの教材を、是非ご活用下さい^^

Q
もくじ

青字は無料部分。白字は会員向け部分です。

  1. 動的ページとは|スクレイピングで注意すべきページの種類
  2. Seleniumとは|動的ページを自動操作して情報を取得する仕組み
  3. サンプルスクリプトの紹介|取得データをopenpyxlでExcelに保存
    • サンプルスクリプトの紹介
    • コード解説|Seleniumの待機・要素取得とopenpyxlでのExcel 書き込み
  4. まとめ

どこよりも安いこの教材を、是非ご活用下さい。

<<前のページ

業務自動化の記事一覧

次のページ>>

動的ページとは|スクレイピングで注意すべきページの種類

Webサイトには大きく分けて「静的ページ」と「動的ページ」があります。

静的ページはサーバーから送られたHTMLがそのまま表示されるため、requestsとBeautifulSoupだけで簡単に情報を収集できます。

一方で 動的ページ は、JavaScriptによってHTMLの内容が後から書き換えられたり、ユーザー操作によって新しい情報が読み込まれたりする仕組みを持っています。

例えば、ニュースサイトで「もっと見る」をクリックすると記事一覧が追加表示される場合や、株価・天気のようにページを開いた後に情報が更新されるケースが典型です。

このようなページでは、ソースコードを直接取得しても必要な情報が含まれていないことが多く、Seleniumのようにブラウザを自動操作できるツール を利用する必要があります。

あわせて読みたい
openpyxl使える関数・メソッド・クラス一覧【Excel自動化の基本リファレンス】
openpyxl使える関数・メソッド・クラス一覧【Excel自動化の基本リファレンス】
【Python】勉強猫がノートパソコンを前にして学習を始める様子。記事内の学習スタート用イラスト

Seleniumとは|動的ページを自動操作して情報を取得する仕組み

Selenium(セレニウム) は、Pythonをはじめ多くのプログラミング言語で利用できる「ブラウザ自動操作ライブラリ」です。

Seleniumの概要|ブラウザ自動操作・待機・要素取得の基本

通常のスクレイピングではrequestsでHTMLを取得し、BeautifulSoupで解析しますが、動的ページではJavaScriptによって後から生成される要素があるため、それだけでは情報を取り出せません。

Seleniumは実際のブラウザ(ChromeやEdgeなど)をプログラムで操作し、人間がブラウザで見ているのと同じ状態のページ を取得できるのが大きな特徴です。

Seleniumを使うと次のようなことが可能になります。

  • JavaScriptで生成された情報を含めて取得できる
  • ボタンのクリックやスクロールなどの操作を自動化できる
  • ログインが必要なページで、フォーム入力やログイン処理を再現できる

このようにSeleniumは「人間の操作をそのままPythonに任せる」イメージで使えるため、動的ページのスクレイピングでは必須のツールとなります。

Seleniumの代表的な機能一覧

Seleniumを使うときによく利用するクラスや関数を整理しておきましょう。

これらを押さえておくと、動的ページのスクレイピングがスムーズに進みます。

クラス / 関数説明
webdriver.Chrome(options=...)Chromeブラウザを起動する。
options を指定することで「画面を表示しない(ヘッドレスモード)」などの設定が可能。
driver.get(url)指定したURLにアクセスする。
driver.implicitly_wait(seconds)ページ内の要素が出てくるまで最大で指定秒数待機する。
動的ページの読み込みに便利。
driver.find_element(By.XXX, "値")ページ内から最初に一致する要素を取得。
By.IDBy.TAG_NAME などを指定できる。
driver.find_elements(By.XXX, "値")条件に合うすべての要素をリストで取得。
ニュース記事のリンク一覧などを収集する場合に利用。
element.text取得した要素からテキストを取り出す。
element.get_attribute("href")要素の属性値(例:リンク先URL)を取得する。
driver.quit()ブラウザを閉じる。処理終了時には必ず呼び出す。

これらの基本操作を組み合わせることで、「ページを開く → 要素を探す → 情報を取り出す → 結果を保存する」という流れを自動化できます。

サンプルスクリプトの紹介|取得データをopenpyxlでExcelに保存

ここからは、実際に動的ページを対象にしたサンプルスクリプトを紹介します。

今回の例では、ニュースサイト(Yahoo!ニュース)を対象に、Seleniumを使って最新の見出しを収集し、Excelに保存する仕組みを作ります。

このスクリプトでは、前回の静的ページ版に加えて 差分更新機能 を取り入れており、既に保存済みの見出しと照合して新しい記事だけを追加保存できるようになっています。

このコードでできること|ニュース見出し取得と重複回避・差分追加

サンプルスクリプトを実行すると、次のような処理が自動的に行われます。

  1. 動的ページにアクセス
    SeleniumでChromeブラウザを起動し、ニュースサイトのトップページにアクセスします。
  2. JavaScriptで生成された要素を含めて取得
    ページ読み込みを待機し、ニュース見出しのリンクやテキストを抽出します。
  3. 差分チェック
    既にExcelに保存されている記事タイトルと比較し、新しいものだけをリストアップします。
  4. Excelに保存
    openpyxl を使って新しい記事をExcelに追加します。
  5. 通知
    追加された件数をポップアップで知らせ、保存先も表示します。

このように「動的に変化するページ」からでも効率的に情報を収集でき、さらに差分更新で重複を防げるのがポイントです。

ここから先は限定公開です

すでに購入済みの方はこちら

購読には会員登録が必要です

「半角英数字」と「大文字1個以上」を含む、8文字以上

会員登録には 利用規約/特定商取引法に基づく表記 への同意が必要です。

すでに会員の方はこちら

ログインして記事を読む

メールアドレス
パスワード
パスワードを忘れた方
新規会員登録はこちら

パスワード再設定

パスワードを再設定します。入力したメールアドレスに再設定用のURLをお送りしますので、パスワードの再設定を行なってください。
キャンセル
記事URLをコピーしました