メインコンテンツにスキップ

ArtinTech Solution

Python source code on a monitor

🌐 他の言語で読む: English · Español · Deutsch · Français · Bahasa Melayu · العربية · 简体中文 · 日本語

Web スクレイピングとは、Web サイトからデータを自動的に抽出することです。調査、価格モニタリング、見込み客リスト、市場分析、社内システムへのデータ供給などに使われます。Python では、BeautifulSoup と Scrapy の2つのツールが代表的です。

両者はよく競合のように比較されますが、解決する課題は異なります。BeautifulSoup は HTML を解析するためのライブラリ、Scrapy は大規模なサイトをクロールするための本格的なフレームワークです。このガイドでは、実際のコードで違いを説明し、プロジェクトに合ったツール選びをお手伝いします。

BeautifulSoup とは?

BeautifulSoup(bs4 パッケージ)は HTML や XML の文書を読み込み、find()、find_all()、select() による CSS セレクターなど、シンプルな Python のメソッドで検索できるツリーに変換します。ページのダウンロード機能は持たないため、ほぼ必ず Requests などの HTTP ライブラリと組み合わせて使います。

  • Python 初心者でも非常に習得しやすい。
  • 乱れた HTML や不正な HTML にも寛容。
  • 標準の html.parser、高速な lxml、ブラウザーに近い解析を行う html5lib など、複数のパーサーに対応。
  • 小さなスクリプトや単発の作業に最適。

Scrapy とは?

Scrapy は、spider と呼ばれる Web クローラーを構築するためのオープンソースフレームワークです。リクエストの送信、リンクの追跡、レスポンスの解析、データのクレンジングとエクスポートまで、一連の処理をすべて担います。

  • 設計段階から非同期。 多数のリクエストを同時に送信するため、大規模サイトでははるかに高速です。
  • マナーを守る仕組みが標準装備。 robots.txt の遵守、AutoThrottle、ダウンロード間隔、リトライは簡単な設定だけで有効にできます。
  • Item pipelines がデータのクレンジング、検証、データベースやファイルへの保存を行います。
  • Feed exports により、コマンド1つで JSON、CSV、XML を出力できます。
  • Middlewares でヘッダー、プロキシ、キャッシュ、エラー処理をカスタマイズできます。

同じスクレイパーを両方のツールで

以下の例は、スクレイピング練習用に作られたサイト quotes.toscrape.com から、すべての名言と著者を収集します。左が Requests+BeautifulSoup、右が Scrapy の spider です。

Requests + Beautiful Soup と Scrapy で書いた同じ名言スクレイパー
同じスクレイパーを2つのツールで実装。BeautifulSoup はループで1ページずつ取得し、Scrapy はリクエストを自動でスケジュールし、1行でページ送りを追跡します。

どちらも同じデータを取得します。違いが表れるのは作業量が増えたときです。BeautifulSoup のスクリプトは1ページの取得を待ってから次を要求しますが、Scrapy は多数のページを並列でダウンロードし、リトライ、速度制御、エクスポートも自動で処理します。

自分で試すには:

pip install requests beautifulsoup4
python bs4_quotes.py

pip install scrapy
scrapy runspider quotes_spider.py -o quotes.json

一覧で比較

BeautifulSoupScrapy
種類HTML 解析ライブラリ本格的なクロールフレームワーク
学習コスト非常に低い中程度
ページのダウンロード不可(Requests や httpx が必要)可能(標準搭載)
大量ページでの速度自分で並行処理を実装しない限り遅い高速(標準で非同期)
リンクの追跡手動標準搭載
データのエクスポート手動JSON・CSV・XML を標準搭載
速度制御とリトライ手動標準搭載
JavaScript で描画されるページ非対応非対応(拡張機能が必要)
最適な用途小さなスクリプトや単発作業大規模・定期的なクロール

BeautifulSoup を選ぶべきケース

  • 数ページ分のデータだけが必要、または一度きりの作業である。
  • Web スクレイピングや Python を学習中である。
  • API のレスポンス、メール、保存済みファイルなどから HTML がすでに手元にあり、解析するだけでよい。
  • 既存のスクリプトやアプリケーションに小さなスクレイピング処理を追加したい。

Scrapy を選ぶべきケース

  • 数百〜数千ページをクロールする必要がある。
  • スクレイパーを定期的に実行し、安定性が求められる。
  • サイト全体でページ送りやリンクをたどる必要がある。
  • データをクレンジング・検証し、構造化して保存する必要がある。
  • 対象サイトに負荷をかけないよう、マナーを守る仕組みを標準で使いたい。

JavaScript を多用するサイトはどうする?

BeautifulSoup も Scrapy も JavaScript は実行しません。必要なコンテンツがページ表示後に JavaScript で読み込まれる場合は、次の2つの方法があります。

  1. ブラウザーの開発者ツールで、そのページが送信している API リクエストを探します。その JSON エンドポイントを直接呼び出すほうが、HTML をスクレイピングするより通常は高速で安定しています。
  2. Playwright や Selenium などのヘッドレスブラウザーを使います。Playwright は scrapy-playwright プラグインで Scrapy と組み合わせることも、単独で使って BeautifulSoup で解析することもできます。

両方を組み合わせて使える?

使えます。Scrapy には独自の高速なセレクターがありますが、BeautifulSoup の API が好みなら、Scrapy のコールバック内でレスポンスを BeautifulSoup に渡しても問題ありません。多くのチームは Requests と BeautifulSoup でプロトタイプを作り、規模の拡大が必要になった段階で Scrapy に移行しています。

責任あるスクレイピングを

技術的にスクレイピングできることと、許可されていることは別です。始める前に:

  • サイトの利用規約を読み、robots.txt を尊重しましょう。
  • 実際の訪問者にとってサイトが遅くならないよう、リクエスト頻度を制限しましょう。
  • 法的根拠なしに個人データを収集しないでください。GDPR や日本の個人情報保護法などの法律は、スクレイピングで取得したデータにも適用されます。
  • 公式 API がある場合は、そちらを優先しましょう。

他のシステムのデータを自社システムに取り込みたいですか?

責任ある方法でデータを収集し、ダッシュボードやデータベースに取り込む連携機能、インポーター、社内ツールを開発します。

結論

学習、小規模なプロジェクト、手早いデータ抽出には、シンプルで寛容、読みやすい BeautifulSoup が最適な出発点です。大規模、定期的、あるいはビジネス上重要な作業には、Scrapy のほうが優れています。自分で作らなければならない速度、構造、マナーを守る仕組みがすべて揃っているからです。

スクレイピングしたデータを自社のダッシュボード、CRM、ERP で活用するなら、スクレイパーはシステムの一部にすぎません。ArtinTech Solution では、こうしたデータを収集・検証・活用する カスタム社内システム や Web アプリケーション を開発しています。プロジェクトについてお聞かせください。

よくある質問

Scrapy は BeautifulSoup より速いですか?

多数のページをクロールする場合は速いです。Scrapy はリクエストを並行して送信しますが、基本的な Requests+BeautifulSoup のスクリプトは1ページずつ取得するためです。1つの文書を解析するだけなら、差はわずかです。

BeautifulSoup は初心者向けですか?

はい。HTML の構造と、Python でそこからデータを抽出する方法を学ぶうえで、最も簡単な方法の一つです。

Scrapy で JavaScript サイトをスクレイピングできますか?

Scrapy 単体ではできません。可能であればサイトの裏側にある API を使うか、scrapy-playwright プラグインでヘッドレスブラウザーを追加してください。

Web スクレイピングは合法ですか?

サイトの利用規約、データの種類、お住まいの国の法律によって異なります。公開されている個人情報以外のデータを節度を持って収集する場合は一般的にリスクが低いですが、必ず規約を確認し、商用プロジェクトでは法律の専門家に相談してください。

Share this article