【AI生成連載】自動化ノウハウ 第3回 RequestsとBeautifulSoupでWebスクレイピングに挑戦

Python自動化

【AI生成連載】自動化ノウハウ 第3回 RequestsとBeautifulSoupでWebスクレイピングに挑戦

こんにちは!「自動化ノウハウ」連載も第3回を迎えました。前回まではPythonの基本的な自動化スクリプトについて解説してきましたが、今回はいよいよ実用性の高いテーマ「Webスクレイピング」に挑戦します。

Webスクレイピングとは、インターネット上のWebページから必要な情報を自動的に収集する技術のことです。手作業でコピー&ペーストしていた作業をプログラムに任せることで、大幅な時間短縮が可能になります。本記事では、Pythonの代表的なライブラリであるRequestsとBeautifulSoupを使って、初心者の方でも実際にスクレイピングを体験できるように、丁寧に解説していきます。

Webスクレイピングとは何か

まずはWebスクレイピングの基本的な考え方について理解しておきましょう。

Webスクレイピングの基本的な仕組み

Webスクレイピングは、大きく分けて次の2つのステップで構成されています。

  • ステップ1:Webページのデータを取得する(Requestsライブラリが担当)
  • ステップ2:取得したデータの中から必要な情報を抜き出す(BeautifulSoupライブラリが担当)

ブラウザで普段見ているWebページは、実は「HTML」というマークアップ言語で書かれています。スクレイピングでは、このHTMLの構造を読み解き、必要な部分だけをプログラムで抽出していきます。

スクレイピングを行う際の注意点・マナー

Webスクレイピングは非常に便利な技術ですが、使い方を誤るとトラブルの原因になることがあります。以下の点には必ず注意しましょう。

  • 対象サイトの利用規約を確認し、スクレイピングが禁止されていないか確認する
  • サーバーに過度な負荷をかけないよう、リクエストの間隔を空ける
  • 取得したデータの著作権や個人情報の取り扱いに配慮する
  • 「robots.txt」でクロールの許可範囲を確認する

これらのルールを守ることが、健全な自動化を続けるための第一歩です。

環境準備とライブラリのインストール

スクレイピングを始める前に、必要なライブラリを準備しましょう。

Requestsライブラリとは

Requestsは、Pythonから簡単にWebサーバーへリクエストを送信し、レスポンス(HTMLなどのデータ)を取得できるライブラリです。シンプルな記述で直感的に使えるため、Web通信の入門ライブラリとして非常に人気があります。

BeautifulSoupライブラリとは

BeautifulSoupは、取得したHTMLを解析し、必要な要素(タグや文字列)を簡単に抜き出すためのライブラリです。HTMLの構造をタグ名やクラス名で指定して検索できるため、複雑な文字列処理を書く必要がありません。

インストール方法

以下のコマンドをターミナル(コマンドプロンプト)で実行し、2つのライブラリをインストールしましょう。

pip install requests
pip install beautifulsoup4

インストールが完了したら、いよいよ実践に入っていきます。

実践!Requestsでウェブページを取得する

ここでは実際にコードを書いて、Webページのデータを取得してみましょう。

基本的なコード例

以下のコードは、指定したURLのHTMLデータを取得する最も基本的な例です。

import requests

url = "https://example.com"
response = requests.get(url)

print(response.text)

requests.get()にURLを渡すだけで、そのページのHTMLデータをまるごと取得できます。取得したデータはresponse.textとして文字列で確認できます。

レスポンスの確認方法

取得がうまくいったかどうかは、ステータスコードで確認できます。

print(response.status_code)
# 200が返ってきたら成功です

ステータスコード「200」は「正常に取得できた」ことを示します。「404」や「500」が返ってきた場合は、URLの間違いやサーバー側のエラーが考えられますので、確認してみましょう。

BeautifulSoupでHTMLを解析してデータを抽出する

Requestsで取得したHTMLは、まだ「文字列」の状態です。ここからBeautifulSoupを使って、必要な情報だけを抜き出していきます。

HTML構造の確認

スクレイピングを行う前に、対象ページのHTML構造をブラウザの「検証(開発者ツール)」機能で確認することが重要です。取得したいデータがどのタグ・クラス名の中にあるのかを事前に把握しておきましょう。

要素の取得方法(find・find_all)

BeautifulSoupには、要素を検索するための便利なメソッドが用意されています。

  • find():条件に合う最初の1つの要素を取得
  • find_all():条件に合うすべての要素をリストで取得

実践的なサンプルコード

実際に、あるページからタイトル要素を取得するサンプルコードを見てみましょう。

import requests
from bs4 import BeautifulSoup

url = "https://example.com"
response = requests.get(url)

soup = BeautifulSoup(response.text, "html.parser")

# タイトルタグを取得
title = soup.find("title")
print(title.text)

# すべてのリンク(aタグ)を取得
links = soup.find_all("a")
for link in links:
    print(link.get("href"))

このように、soup.find()やsoup.find_all()を使うことで、HTMLの中から必要なタグや属性を簡単に抜き出すことができます。クラス名を指定して検索したい場合は、soup.find_all("div", class_="content")のように記述します。

まとめ

今回は、連載第3回として「RequestsとBeautifulSoupを使ったWebスクレイピング」の基本を解説しました。振り返ると、以下のようなステップで進めてきました。

  • Webスクレイピングの仕組みと注意点を理解する
  • RequestsとBeautifulSoupをインストールする
  • Requestsでウェブページのデータを取得する
  • BeautifulSoupで必要な情報を解析・抽出する

スクレイピングは、慣れてくると定期的な情報収集やデータ分析の自動化に大いに役立つ技術です。ただし、対象サイトへの配慮を忘れず、ルールとマナーを守って活用していきましょう。

次回は、スクレイピングしたデータをCSVファイルやスプレッドシートに自動保存する方法について解説予定です。お楽しみに!

\ IT・AI特化の就労支援・スキルアップ /

【Neuro Dive】AI・データサイエンスの詳細を見る >

タイトルとURLをコピーしました