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

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

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

今回は 静的ページの情報収集 を体験しましょう。

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

業務で扱う情報の多くはインターネット上から入手できますが、毎日手作業でコピー&ペーストするのは非効率です。

Pythonを使えば、Webサイトから自動的にデータを収集し、Excelに整理して保存する仕組みを簡単に作れます。

この記事では 静的ページのスクレイピング をテーマに、Webサイトに表示されているニュース見出しなどを自動で取得し、Excelにまとめる方法を解説します。

静的ページは仕組みがシンプルで初心者でも扱いやすいため、スクレイピングの第一歩として最適です。

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

Q
もくじ

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

  1. 静的ページとは|Webスクレイピングで扱いやすいページの種類
  2. requestsとBeautifulSoup|スクレイピングの基本ライブラリ
  3. サンプルスクリプトの紹介|静的ページから見出しとリンクを抽出
    • サンプルスクリプト全文
    • サンプルスクリプトの解説|処理の分解とポイント
  4. まとめ|静的ページとrequests・BeautifulSoupの基本を押さえよう

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

<<前のページ

業務自動化の記事一覧

次のページ>>

静的ページとは|Webスクレイピングで扱いやすいページの種類

Webスクレイピングを行う上で最初に押さえておきたいのが、Webページの種類です。

大きく分けると「静的ページ」と「動的ページ」がありますが、静的ページはその名の通り内容が固定されており、HTMLを取得すればそのまま必要な情報が含まれています。

例えば、企業の会社概要ページや記事本文など、ページを開くたびに内容が変わらないものは静的ページにあたります。

この特徴により、PythonでアクセスしてHTMLを解析するだけで情報を抜き出せるため、初心者がスクレイピングを学ぶ入り口として適しています。

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

requestsとBeautifulSoup|スクレイピングの基本ライブラリ

Webスクレイピングで静的ページを扱う場合、基本となるのが requestsBeautifulSoup という2つのライブラリです。

  • requests はWebサイトにアクセスしてHTMLデータを取得する役割を持ちます。
  • BeautifulSoup は取得したHTMLを解析し、欲しい情報だけを抜き出すためのライブラリです。

この2つを組み合わせることで「ページにアクセスしてデータを持ち帰り、その中から必要な部分を切り出す」という一連の流れをシンプルに実現できます。

特に静的ページのスクレイピングでは、この組み合わせが最も基本的で効率的な方法となります。

これらを使用するには事前にインストールしておく必要があります。

インストール方法は 一つ前の記事 で紹介していますので、まだ準備ができていない場合はそちらを参照してください。

requestsの代表的な関数とプロパティ

requestsはWebページにアクセスしてデータを取得するライブラリです。

主に以下の機能を押さえておくと十分活用できます。

ここで全て暗記するのではなく、必要に応じてここに戻ってきて確認するようにしましょう。

関数・プロパティ説明
requests.get(url, params=None, headers=None)指定したURLにアクセスしてHTMLを取得する。
クエリやヘッダーを指定可能。
requests.post(url, data=None, json=None)フォームデータやJSONを送信する際に利用。
ログインや検索条件送信に使う。
response.status_codeサーバーからのステータスコードを確認。
200=成功、404=ページなし等。
response.textページのHTMLを文字列として取得。
BeautifulSoupに渡して解析する。

BeautifulSoupの代表的な関数とメソッド

BeautifulSoupはHTMLを解析し、欲しい情報を抽出するライブラリです。

以下のようなメソッドがよく使われます。

関数・メソッド説明
BeautifulSoup(html, "html.parser")HTML文字列を解析して扱いやすい形に変換。
soup.find(tag, attrs)条件に合う最初のタグを1つ取得。
例:soup.find("h1")
soup.find_all(tag, attrs)条件に合うタグをすべてリストで取得。
ニュースやリンク一覧の収集に便利。
.get_text(strip=True)タグの中のテキストを取得。
余計な空白を除去可能。
.get("href")<a> タグのリンク先URLを取得。
記事タイトルとURLをセットで収集可能。

サンプルスクリプトの紹介|静的ページから見出しとリンクを抽出

ここからは実際に動作するPythonスクリプトを例に、静的ページのスクレイピングを体験していきます。

サンプルコードではニュースサイトにアクセスし、記事の見出しとリンクを収集してExcelに保存する流れを実装しています。

「requests」でWebページのHTMLを取得し、「BeautifulSoup」でニュース見出しとリンクを抽出し、最後に「openpyxl」でExcelに書き込む、という一連の流れを体験できる構成になっています。

このコードでできること|ニュース見出しとリンクの抽出・
Excel出力の流れ

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

  1. ニュースサイト(例:Yahoo!ニュース)のトップページにアクセスする
  2. ページ内の見出しテキストとリンクURLを収集する
  3. 収集したデータをExcelファイル(news_headlines.xlsx)に一覧として保存する
  4. 保存が完了したらメッセージで完了通知を表示する

つまり、これまで手作業でニュースサイトを開いてコピーしていた作業を、Pythonに任せて一括で自動化できるようになります。

日々の情報収集やレポート作成の効率を大幅に向上させられるのがポイントです。

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

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

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

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

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

すでに会員の方はこちら

ログインして記事を読む

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

パスワード再設定

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