BeautifulSoupの使い方:Pythonによるウェブスクレイピング入門

最終更新日:February 2, 2026

ウェブスクレイピングって、昔は一部のエンジニアだけが使う特別なスキルってイメージだったけど、今は営業やオペレーション、マーケティングリサーチをやってる人なら誰でも身につけておきたい力になってるよね。ウェブ上のデータ量は年々爆発的に増えていて、2019年から2023年の間にしたっていうデータもあるくらい。だからこそ、がデータを意思決定のど真ん中に置いてる。でも実際は、が非構造化データ(ぐちゃぐちゃなHTMLとか)の扱いに苦戦してるのが現実。自分も、ウェブサイトの情報をひたすらスプレッドシートにコピペして疲れ切ってるチームを何度も見てきたけど、正直それじゃ効率悪すぎる。

そこで登場するのがPythonのBeautifulSoup。この記事では、BeautifulSoupを使ったウェブスクレイピングのやり方を、ビジネス現場でもすぐ使える具体例と一緒に紹介するよ。さらに、効率重視派の自分から、AI搭載のウェブスクレイパーとBeautifulSoupを組み合わせて、誰でもサクッとクリーンで構造化されたデータを手に入れる方法も伝授。プログラミング初心者でも大丈夫!

BeautifulSoupって何?ウェブスクレイピングで使う理由

beautifulsoup-web-scraping-overview.png まずは基本から。は、HTMLやXMLドキュメントをサクッと解析できるPythonのライブラリ。ウェブページの「タグだらけの海」を、扱いやすいツリー構造に変換してくれる“通訳”みたいな存在。たとえば、ECサイトの商品価格やニュースの見出し、企業リストなど、ウェブ上の情報をきれいなデータとして抜き出したいときにピッタリ。

なんでみんなに選ばれてるのか?一番の理由は、初心者でも使いやすいこと。BeautifulSoupはHTMLのミスにも寛容だし、Pythonらしい直感的な書き方ができるから、数行のコードですぐスクレイピングが始められる。利用者も多いから、困ったときはググればすぐ解決策が見つかるのもありがたい。

BeautifulSoupの主な使い道はこんな感じ:

  • ECサイトから商品名・価格・評価を抜き出す
  • ニュースサイトから見出し・著者・公開日をゲット
  • 企業や連絡先リストなどのテーブル・ディレクトリ解析
  • リスティングサイトからメールアドレスや電話番号を集める
  • 価格変動や新着求人などの更新を監視

静的なHTMLデータの抽出なら、BeautifulSoupが一番使いやすいよ。

BeautifulSoupがウェブスクレイピングで選ばれる理由

Pythonには他にもいろんなスクレイピングライブラリがあるけど、BeautifulSoupにはこんな強みがある:

  • シンプルさ: 軽くて覚えやすいし、セットアップも超簡単。ちょっとしたデータ抽出や初心者の入門に最適。
  • 柔軟性: HTMLが崩れてても強いし、柔軟にデータを抜き出せる。
  • 自由度: 複雑なクローリング構造に縛られず、必要なHTMLだけ渡して抽出できる。
  • 他ライブラリとの連携: requests(ページ取得)、csv(データ保存)、pandas(データ分析)などと組み合わせやすい。

他のツールと比べるとこんな感じ:

ツール得意分野メリットデメリット
BeautifulSoup静的HTML解析、初心者向けシンプル、セットアップが速い、不備に強い、柔軟JavaScript主体のサイトには不向き
Scrapy大規模・非同期処理強力・スケーラブル・クローリング機能内蔵学習コストが高め、セットアップが複雑
SeleniumJavaScript/動的コンテンツJS操作・フォーム入力・ボタンクリックも可能動作が重く、リソース消費が大きい

静的ページの解析や初めてのスクレイピングには、BeautifulSoupが“万能ナイフ”みたいに活躍してくれる()。動的なサイトや複雑な処理が必要なときは、SeleniumやScrapyと組み合わせるのもアリ。

Python環境でBeautifulSoupを使う準備

さっそく始めよう。環境構築の流れはこんな感じ:

  1. Pythonのインストール: から最新版をダウンロード。

  2. 仮想環境の作成(おすすめ):

    1python -m venv venv
    2source venv/bin/activate  # Windowsなら: venv\Scripts\activate
  3. BeautifulSoupと必要なライブラリのインストール:

    1pip install beautifulsoup4 requests lxml html5lib
    • beautifulsoup4: 本体ライブラリ
    • requests: ページ取得用
    • lxmlまたはhtml5lib: 高速・高精度なHTMLパーサー
  4. トラブルシューティング:

    • “pipが見つからない”ときはpip3py -m pipを試してみて
    • Mac/Linuxはsudoが必要な場合も
    • WindowsはPythonのPATH設定をチェック

セットアップ確認用のテストコード:

1from bs4 import BeautifulSoup
2import requests
3html = requests.get("http://example.com").text
4soup = BeautifulSoup(html, "html.parser")
5print(soup.title)

<title>Example Domain</title>って表示されたら準備OK()。

Python Beautiful Soupの実践例

実際に使ってみよう。たとえば、ニュースサイトから最新の見出しを抜き出したいときは:

1. ウェブページを取得

1import requests
2from bs4 import BeautifulSoup
3url = "https://www.bbc.com/news"
4response = requests.get(url)
5html = response.text

2. HTMLを解析

1soup = BeautifulSoup(html, "html.parser")

3. HTML構造を調査

ブラウザの開発者ツール(右クリック→検証)で、見出しがどのタグに入ってるかチェック。多くのニュースサイトは<h3>タグや特定のクラスを使ってる。

例:

1<h3 class="gs-c-promo-heading__title">Headline Title</h3>

4. データを抽出

1headlines = soup.find_all("h3", class_="gs-c-promo-heading__title")
2for h in headlines:
3    print(h.get_text(strip=True))

これでページ内の見出しが全部表示される。

5. CSVに保存

抜き出した見出しをCSVに保存:

1import csv
2with open("headlines.csv", "w", newline='', encoding="utf-8") as file:
3    writer = csv.writer(file)
4    writer.writerow(["headline"])
5    for h in headlines:
6        writer.writerow([h.get_text(strip=True)])

ExcelやGoogleスプレッドシートで開けるCSVファイルができるよ。

効率的なデータ抽出のためのHTML構造の理解

コードを書く前に、必ずページのHTMLを調べておこう。

  1. 開発者ツールを開く: 右クリック→「検証」
  2. データの場所を探す: 欲しい情報(見出し、価格、著者など)がどのタグにあるか確認
  3. タグやクラス名をメモ: 例:class="product-title"id="main-content"
  4. セレクタのテスト: BeautifulSoupの.find(), .find_all(), .select()で要素を抽出

便利な小技:soup.prettify()でHTMLを見やすく整形表示できる。

BeautifulSoupでデータを抽出・構造化

たとえば、ブログページからタイトルと著者を抜き出したいときは:

1articles = soup.find_all("article")
2data = []
3for article in articles:
4    title = article.find("h2").get_text(strip=True)
5    author = article.find("span", class_="author").get_text(strip=True)
6    data.append({"title": title, "author": author})

こんな感じで辞書型リストにまとめておけば、CSV出力や分析にも便利。

リンクや画像など、属性の抜き出しも簡単:

1for link in soup.find_all("a"):
2    print(link.get("href"))

画像の場合:

1for img in soup.find_all("img"):
2    print(img.get("src"))

抽出データの保存:PythonからExcelやCSVへ

データを構造化したら、エクスポートも超簡単。csvモジュールを使う例:

1import csv
2with open("articles.csv", "w", newline='', encoding="utf-8") as file:
3    writer = csv.DictWriter(file, fieldnames=["title", "author"])
4    writer.writeheader()
5    for row in data:
6        writer.writerow(row)

pandasを使う場合:

1import pandas as pd
2df = pd.DataFrame(data)
3df.to_csv("articles.csv", index=False)
4df.to_excel("articles.xlsx", index=False)

海外のデータを扱うときは、文字化け防止のためUTF-8エンコーディングを使おう。

事例:BeautifulSoupでニュースサイトのデータをスクレイピング

実際に、ニュースサイトから記事タイトル・著者・公開日を抜き出す例を紹介。

たとえばから記事データを取得する場合:

1import requests
2from bs4 import BeautifulSoup
3import csv
4url = "https://edition.cnn.com/world"
5response = requests.get(url)
6soup = BeautifulSoup(response.content, "html.parser")
7articles = soup.find_all("article")
8data = []
9for article in articles:
10    title_tag = article.find("h3")
11    date_tag = article.find("span", class_="date")
12    author_tag = article.find("span", class_="author")
13    title = title_tag.get_text(strip=True) if title_tag else ""
14    date = date_tag.get_text(strip=True) if date_tag else ""
15    author = author_tag.get_text(strip=True) if author_tag else ""
16    data.append({"title": title, "date": date, "author": author})
17with open("cnn_articles.csv", "w", newline='', encoding="utf-8") as file:
18    writer = csv.DictWriter(file, fieldnames=["title", "date", "author"])
19    writer.writeheader()
20    for row in data:
21        writer.writerow(row)

このスクリプトで最新記事のタイトル・日付・著者を抜き出してCSVに保存できる。競合調査やトレンド分析、コンテンツリサーチなど、いろんなビジネスシーンで使えるよ。

ワークフローを加速:BeautifulSoupとThunderbitの連携

もっと効率化したいなら、の活用が超おすすめ。ThunderbitはAI搭載のウェブスクレイパーChrome拡張機能で、データ抽出の手間を一気に減らしてくれる。

  • 「AIフィールド提案」機能: ページを自動解析して、抜き出すべきデータ項目をAIが提案。HTMLやセレクタの調整は一切不要。
  • サブページのスクレイピング: 商品や記事の詳細ページも自動でたどってデータを拡充。
  • 即時エクスポート: 1クリックでExcel、Googleスプレッドシート、Airtable、Notionに出力できる。
  • ページネーション対応: 複数ページや無限スクロールにもバッチリ対応。
  • 定期実行: データの自動更新もOK。

おすすめのハイブリッドワークフローはこんな感じ:

  1. Thunderbitで抽出開始: 対象サイトを開いてThunderbitアイコンをクリック。「AIフィールド提案」で必要なカラム(タイトル・著者・日付など)を自動選択。
  2. データをエクスポート: CSVやGoogleスプレッドシートに出力。
  3. BeautifulSoupでカスタム処理: さらに高度な分析やデータクレンジングが必要なら、エクスポートしたCSVをPythonで読み込んでBeautifulSoupやpandasで後処理。

ThunderbitのスピードとAIによる自動抽出、BeautifulSoupの柔軟なカスタマイズ性、両方のいいとこ取りができるよ。

スピードとデータ品質:ThunderbitとBeautifulSoupの併用メリット

thunderbit-beautifulsoup-data-pipeline.png なんで両方使うのがいいのか?自分の経験だと:

  • 圧倒的なスピード: Thunderbitはクラウドモードで最大50ページを同時並列で処理できて、データ取得が数分で終わる。
  • データの網羅性: ThunderbitのAIはレイアウト変更にも柔軟に対応して、抜け漏れの少ない構造化データを抽出。
  • エラー削減: クラス名の変更とかでスクリプトが壊れる心配なし。ThunderbitのAIが毎回ページを再解析してくれる。
  • 高度な後処理: BeautifulSoupやpandasを使えば、フィルタリング・翻訳・データ統合なども自由自在。

このハイブリッド手法は特に:

  • 大規模リード獲得: Thunderbitで大量データを取得して、BeautifulSoupでクレンジングや加工。
  • 商品モニタリング: Thunderbitで定期的にデータ収集、BeautifulSoupでトレンド分析や異常検知。
  • ニュース・コンテンツ追跡: Thunderbitで記事を一括取得して、Pythonで感情分析やキーワード抽出。

BeautifulSoupウェブスクレイピングのよくあるトラブルと対策

ウェブスクレイピングはいつも順調とは限らない。主な課題とその対策をまとめてみた:

  • 動的コンテンツ: JavaScriptで後からデータが読み込まれる場合、BeautifulSoupだけじゃ取得できない。SeleniumやThunderbitのブラウザモードを使おう。
  • ボット対策: 一部のサイトは自動リクエストをブロックしてくる。User-Agentを偽装したり、リクエスト間隔を空けたり、Thunderbitのクラウドスクレイピングで回避できることも。
  • HTML構造の変化: スクリプトが急に動かなくなったら、HTMLが変わった可能性大。もう一度ページを調べてセレクタを修正しよう。ThunderbitのAIなら自動で対応してくれる。
  • データの欠落: .get_text()を使う前に要素があるか必ず確認。属性取得は[]じゃなくて.get()を使うとエラー回避に有効。
  • 文字化け: ファイル保存時はUTF-8エンコーディングを指定しよう。

あと、robots.txtや各サイトの利用規約は必ず守って、マナーを守ったスクレイピングを心がけてね。

まとめ・ポイント

BeautifulSoupを使ったウェブスクレイピングは、今の時代のデータ活用に欠かせない実践スキル。この記事で押さえておきたいポイントは:

  • BeautifulSoupは静的HTMLの解析・データ抽出に最適なPythonライブラリ
  • セットアップは超簡単:Pythonとpip、必要なライブラリを入れるだけ
  • HTML構造の調査がデータ抽出のカギ
  • CSVやExcelへのエクスポートでビジネス活用もスムーズ
  • Thunderbitとの連携でAIによる自動フィールド検出・高速スクレイピング・簡単エクスポートが可能
  • ハイブリッドワークフロー(Thunderbitで大量抽出、BeautifulSoupでカスタム処理)がスピード・品質・柔軟性を両立

ウェブスクレイピングをもっと効率化したいなら、まずはBeautifulSoupのシンプルなスクリプトから始めて、でどれだけ作業がラクになるかもぜひ体験してみて。さらに詳しいガイドはでチェック!

快適なスクレイピングライフを!データがいつもクリーンで、構造化されて、すぐ使える状態でありますように。

Thunderbit AIウェブスクレイパーを試す

よくある質問

1. BeautifulSoupって何?何に使うの?
BeautifulSoupは、HTMLやXMLドキュメントを解析するためのPythonライブラリ。ウェブページからデータを抜き出して、リストやテーブルみたいな構造化データに変換できるから、ウェブスクレイピングに最適。

2. BeautifulSoupとSelenium、Scrapyの違いは?
BeautifulSoupは静的HTMLページの解析に特化してて、軽くて使いやすいのが特徴。SeleniumはJavaScriptで動的に生成されるページのスクレイピングが得意で、Scrapyは大規模・非同期処理向けのフレームワーク。初心者や手軽にやりたいならBeautifulSoupが一番。

3. BeautifulSoupとThunderbitは一緒に使える?
もちろんOK。ThunderbitはAIでウェブページのフィールドを自動抽出、BeautifulSoupはエクスポートしたデータのカスタム処理や詳細分析に使える。

4. BeautifulSoupでよくある課題は?
動的コンテンツの取得、ボット対策、HTML構造の変化などが主な課題。ThunderbitのAI機能やブラウザモードを使えば、多くの課題が解決できる。

5. BeautifulSoupで抜き出したデータをExcelやCSVに出力する方法は?
Pythonのcsvモジュールやpandasライブラリを使えば、抜き出したデータをCSVやExcelファイルに簡単に書き出せる。文字化け防止のためUTF-8エンコーディングを使おう。

自分でもやってみたい人は、をダウンロードして、スマートなスクレイピングを始めてみて。さらに詳しいチュートリアルやヒントはでチェック!

さらに詳しく知りたい人はこちら

Shuai Guan
Shuai Guan
Co-founder/CEO @ Thunderbit. Passionate about cross section of AI and Automation. He's a big advocate of automation and loves making it more accessible to everyone. Beyond tech, he channels his creativity through a passion for photography, capturing stories one picture at a time.
Topics
Python BeautifulSoup 実例BeautifulSoup ウェブスクレイピング チュートリアル
目次

Thunderbitを試す

リードや各種データを2クリックで抽出。AI搭載。

Thunderbitを入手 無料で使える
AIでデータ抽出
Google Sheets、Airtable、Notionへ簡単にデータ転送
Chrome Store Rating
PRODUCT HUNT#1 Product of the Week