requestsライブラリと組み合わせたスクレイピング

Beautiful Soupを使用した実践的なWebスクレイピングでは、requestsライブラリとの組み合わせが非常に一般的です。requestsはHTTPリクエストを簡潔に送信できるPythonのライブラリであり、これとBeautiful Soupを連携させることで、Webページの取得から解析までを一貫して行うことができます。

以下に詳しく説明します。


1. 基本的な流れ

  1. requestsでWebページのHTMLを取得する

  2. 取得したHTMLをBeautiful Soupでパース(解析)する

  3. 必要なデータを抽出する


2. 実装例

python
import requests from bs4 import BeautifulSoup # ステップ1: HTMLの取得 url = 'https://example.com' response = requests.get(url) # ステップ2: レスポンスの内容をBeautiful Soupでパース soup = BeautifulSoup(response.text, 'html.parser') # ステップ3: 必要なデータの抽出 title = soup.find('title').get_text() print('ページタイトル:', title)

3. 主なポイント

3.1 requests.get()の使い方

  • 指定したURLにGETリクエストを送信し、レスポンスオブジェクトを返します。

  • response.textでHTML本文を文字列として取得できます。

  • エラーハンドリングとして、response.status_codeでステータスを確認し、raise_for_status()で例外を発生させることができます。

python
response = requests.get(url) response.raise_for_status() # ステータスが200でない場合は例外を投げる

3.2 User-Agentの指定(ヘッダーのカスタマイズ)

一部のサイトは、ブラウザからのアクセスでないと拒否することがあります。その場合、ヘッダーをカスタマイズします。

python
headers = { 'User-Agent': 'Mozilla/5.0' } response = requests.get(url, headers=headers)

4. 応用例:特定のリンクの抽出

python
links = soup.find_all('a', href=True) for link in links: print(link['href'])

5. 注意点

  • サイトによってはrobots.txtでスクレイピングを禁止していることがあります。事前に確認することが重要です。

  • サーバーへの過度なアクセスはマナー違反であり、IPブロックの対象となる可能性があります。

    • time.sleep()などを使って適切な間隔を設けましょう。

  • 動的コンテンツ(JavaScriptで描画されるページ)にはrequestsだけでは対応できず、SeleniumやPlaywrightなどのツールが必要です。


まとめ

requestsとBeautiful Soupを組み合わせることで、HTMLページの取得と解析が効率よく行えます。この組み合わせは、静的ページを対象としたWebスクレイピングにおいて、もっとも基本的かつ広く使われている手法です。

ChatGPT4o 生成日:2025/06/19