【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特化の就労支援・スキルアップ /

