Pythonでウェブサイトからデータを取得する方法

最終更新日 June 3, 2026
How to use Python to pull data from a website text with illustration of person at computer desk

Webには、もはや手に負えないほどのデータがあふれています。2026年にビジネスを動かしているなら、「いちばん良いデータを、いちばん速く手にした者が勝つ」という現実を、肌で感じているはずです。営業、Eコマース、オペレーション、市場調査——分野はどこであれ、Webサイトから必要なときに必要なだけデータを引き出す力は、いつのまにか「シグナルで動くチーム」と「勘で動くチーム」を分ける境目になりました。その定番ツールとして頭角を現してきたのがPythonです。Apifyの「State of Web Scraping」調査によれば、開発者の約69.6%が使っているとされ、2位の言語を大きく引き離しています。支持される理由のひとつは充実したエコシステム(Requests、Beautiful Soup、Selenium、Scrapy、Playwright、Pandas)、もうひとつは言語そのものがほとんど擬似コードのように読めることです。だからこそ、エンジニア以外の関係者に見せられる実用的なスクレイパーを、短時間でこしらえやすいわけです。

Thunderbit を試す:ノーコードのAIウェブスクレイパー わずか数クリックでウェブデータをスクレイピング、整理、整形。コードは不要です。 Get Started Free

ただ、ここからが面白いところです。PythonはWebサイトからデータを取るうえで万能ナイフのような存在ですが、選択肢はそれだけではありません。Thunderbit のようなノーコードツールのおかげで、いまでは誰でも——そう、コードが苦手な同僚であっても——数クリックでWebデータをスクレイピングし、整え、並べ直せるようになりました。この記事では、従来のPythonによるやり方(Requests、Beautiful Soup、Selenium、Scrapy、Pandas)と、生産性を底上げするツールとしてのThunderbitの使いどころを、両方とも取り上げます。実際に動くコードに加えて、ビジネスの現場でどう生きるか、そして私自身が現場で得た教訓もお伝えしていきます。

「Python でウェブサイトからデータを取得する」とはどういう意味?

python-web-data-extraction.png かみくだいて言えば、「PythonでWebサイトからデータを取得する」とは、Pythonスクリプトを走らせてWebページから情報を自動で集め、乱雑なHTMLを扱いやすい構造化データへと組み替える作業を指します。これが一般に ウェブスクレイピング と呼ばれるものです。商品価格や連絡先、レビューを手で一つずつコピー&ペーストする代わりに、その面倒をPythonに肩代わりさせる、というわけです。

Webサイトは、大きく2つのタイプに分けられます。

  • 静的サイト:最初に届くHTMLの中に、コンテンツがすべて入っています。「ページのソースを表示」で見えるものが、そのまま取得できる中身です。HTMLを取ってきて解析するだけで済むので、スクレイピングは比較的やさしい部類に入ります。
  • 動的サイト:ページが読み込まれたあと、JavaScriptがデータを呼び込みます。無限スクロール、リアルタイムの価格更新、ボタンを押さないと現れないコンテンツなどが、これに当たります。こうしたサイトを相手にするには少し工夫が要り、Seleniumのようなツールでブラウザを再現するか、サイトを裏で動かしている隠れたAPIを探し当てる必要があります(infatica.io)。

スクレイピングの対象としてよく挙がるのは、商品情報の一覧表、リードのリスト、価格、レビュー、画像などです。リードリストづくりでも、競合価格の追跡でも、市場の反応集めでも、Pythonを使えばWebをまるごと自分専用のデータレイクに変えられます。

なぜ企業は Python でウェブサイトからデータを取得するのか

実務に引きつけて考えてみましょう。なぜこれほど多くの企業がWebデータ抽出に熱を上げているのか。代表的な活用例と、そこから得られるビジネス価値を並べてみます。

ビジネス活用例取得するデータROI / 効果
リード獲得(営業)ディレクトリやSNSの連絡先情報月間 3,000 件超のリード、営業担当 1 人あたり週約 8 時間を削減 (Thunderbit))
価格モニタリング(Eコマース)商品価格、在庫数売上約 4% 増、アナリスト工数 30% 削減 (blog.apify.com)
市場調査レビュー、SNS投稿、フォーラムコメントターゲティング改善。スクレイパーの 26% がソーシャルデータを対象 (Thunderbit)
不動産リスティング物件データ、比較事例、所在地統計案件発掘の高速化、最新の比較事例を入手
オペレーション自動化在庫、レポート、繰り返し発生するデータ手作業タスクを 10~50% 削減

要するに、Python(あるいはThunderbit)によるWebデータ抽出は、チームの動きを速め、より賢い意思決定を後押しし、毎週のように時間を奪っていた単純作業を肩代わりしてくれます。ウェブスクレイパーソフトウェア市場が2024年に約10.1億ドルに達し、同じApifyの「State of Web Scraping」レポートでは2032年までに24.9億ドルへとほぼ倍増すると見込まれているのも、こうして見れば当然の流れと言えるでしょう。

ウェブサイトのデータ抽出に欠かせない Python ツール

Pythonがウェブスクレイピングで選ばれ続ける最大の理由は、やはりエコシステムの厚みです。代表的なツールと、それぞれをどんな場面で使うべきかを、手短に見ていきましょう。

ツール最適な用途長所短所
Requests静的 HTML や API の取得シンプル、高速、初心者向きJavaScript は扱えない
Beautiful SoupHTML/XML を構造化データに解析使いやすい、柔軟HTML を先に取得する必要がある、JS サイトには不向き
Selenium動的サイト、JS が多いサイト、ログイン、クリック操作ブラウザでできることは何でも扱える遅い、設定が多い、重い
Scrapy大規模・複数ページのクロール高速、非同期、堅牢、拡張性が高い学習コストが高め、デフォルトでは JS 非対応
Thunderbitノーコード/ローコード、ビジネスユーザー向けAI 搭載、JS 対応、書き出しが簡単複雑なロジックの細かなカスタマイズはやや弱い

実務では、シンプルな案件はRequests + Beautiful Soupで片付け、動的サイトはSeleniumで攻め、大規模なクロールはScrapyで回し、スピードと手軽さを優先したいときはThunderbitに任せる——こうした使い分けがよく見られます。

View media

ステップ 1: Python Requests を使ってウェブサイトのデータを取得する

まずは土台から。Requests は、Pythonでページを取りに行くときの主力です。使い方を順に見ていきましょう。

  1. Requests をインストールする:

    pip install requests
    
  2. ページを取得する:

    import requests
    
    url = "https://example.com/products"
    response = requests.get(url)
    if response.status_code == 200:
        html_content = response.text
    else:
        print(f"データの取得に失敗しました: {response.status_code}")
    

    (realpython.com)

  3. トラブルシューティングのヒント:

    • ブラウザを装うためにヘッダーを足す:
      headers = {"User-Agent": "Mozilla/5.0"}
      response = requests.get(url, headers=headers)
      
    • response.raise_for_status() でエラーを拾う
    • JSONを返すAPIなら: data = response.json()

Requestsは静的ページやAPIにうってつけです。ただし、ページは取れたのに肝心のデータが見当たらないなら、たいていはJavaScriptが後から読み込んでいます。そんなときこそSeleniumの出番です。

ステップ 2: Beautiful Soup でウェブコンテンツを解析する

HTMLを手に入れたら、次は Beautiful Soup で必要な部分を抜き取ります。手順は以下のとおりです。

  1. Beautiful Soup をインストールする:

    pip install beautifulsoup4
    
  2. HTMLを解析する:

    from bs4 import BeautifulSoup
    
    soup = BeautifulSoup(html_content, 'html.parser')
    
  3. データを抽出する:

    • 商品カードをまとめて取る:
      for product in soup.select('div.product-card'):
          name = product.select_one('.product-name').text.strip()
          price = product.select_one('.product-price').text.strip()
          print(name, price)
      
    • 表の場合:
      for row in soup.find_all('tr'):
          cells = row.find_all('td')
          # 必要に応じてセルのデータを抽出する
      

ヒント:

  • ブラウザの開発者ツールでHTMLをのぞき、ぴったりのセレクターを見つけましょう。
  • テキストを取り出すときは .get_text().text を使います。
  • 値がないケースに備え、チェックを入れて処理します(if price_elem else "N/A" など)。

Requests + Beautiful Soupは、ウェブスクレイピング界の鉄板コンビです。シンプルで信頼でき、たいていの静的サイトはこれでこなせます。

ステップ 3: Selenium で動的コンテンツを扱う

サイトがJavaScriptでデータを呼び込むなら、本物のユーザーのように振る舞えるツールが必要になります。そこで登場するのが Selenium です。

  1. Selenium をインストールする:

    pip install selenium
    

    Selenium 4.6以降では、組み込みのSelenium Managerが webdriver.Chrome() の初回実行時に対応ドライバーを自動でダウンロードするため、ChromeDriverを手作業でPATHへ通す必要は、ふつう無くなりました。(古いSeleniumに固定している場合は、従来どおりChromeDriverを自分で落としてPATHに加える必要があります。)

  2. ブラウザを自動操作する:

    from selenium import webdriver
    
    driver = webdriver.Chrome()
    driver.get("https://example.com/products")
    products = driver.find_elements_by_class_name("product-card")
    for prod in products:
        print(prod.text)
    driver.quit()
    
  3. ログインやクリック操作を処理する:

    driver.get("https://site.com/login")
    driver.find_element_by_name("username").send_keys("myuser")
    driver.find_element_by_name("password").send_keys("mypassword")
    driver.find_element_by_id("login-button").click()
    
  4. 動的コンテンツを待つ:

    from selenium.webdriver.common.by import By
    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.support import expected_conditions as EC
    
    WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.CLASS_NAME, "data-row")))
    
  5. ヘッドレスモード(ウィンドウなし):

    options = webdriver.ChromeOptions()
    options.add_argument("--headless")
    driver = webdriver.Chrome(options=options)
    

Seleniumは強力ですが、その分だけ動作も重めです。どうしてもブラウザ自動化が欠かせないサイトに向いています。

ステップ 4: Scrapy で大規模なデータ取得にスケールさせる

何百、何千ものページをクロールする必要が出てきたら、頼れる相棒は Scrapy です。

  1. Scrapy をインストールする:

    pip install scrapy
    scrapy startproject myproject
    
  2. スパイダーを作成する:

    import scrapy
    
    class ProductsSpider(scrapy.Spider):
        name = "products"
        start_urls = ["https://example.com/category?page=1"]
    
        def parse(self, response):
            for product in response.css("div.product-card"):
                yield {
                    'name': product.css(".product-title::text").get().strip(),
                    'price': product.css(".price::text").get().strip(),
                }
            next_page = response.css("a.next-page::attr(href)").get()
            if next_page:
                yield response.follow(next_page, self.parse)
    
  3. スパイダーを実行する:

    scrapy crawl products -o products.csv
    

Scrapyは非同期で高速、しかも大規模処理を前提に作られています。サイト全体のクロールや、入り組んだページネーションの処理にうってつけです。

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

ステップ 5: Thunderbit でデータ抽出を一気に強化する

ここで Thunderbit の話に移りましょう。ビジネスユーザーにとって流れを大きく変えつつある、ノーコードのAIウェブスクレイパーです。

  • AI による項目提案:Thunderbitがページを読み取り、抽出すべき最適な列を提案してくれます。HTMLを手探りで掘る必要はありません。
  • 動的ページに対応:ページをあなたと同じように認識するので、JavaScript、無限スクロール、ログイン画面も問題なくさばきます。
  • サブページのスクレイピング:各項目の詳細ページを自動でたどり、データセットを厚くできます。
  • 事前作成テンプレート:Amazon、Zillow、Shopifyといった人気サイト向けには、すぐ使えるテンプレートが揃っています。設定は不要です。
  • ワンクリック抽出:ページ上のメールアドレスや電話番号をまとめて取りたい? Thunderbitならワンクリックで済みます。
  • スケジューリングとクラウドスクレイピング:「毎週月曜の9時」のような自然な言い回しで定期実行を設定でき、Thunderbitのクラウドで最大50ページを一度に処理できます。
  • どこへでも書き出し:データをExcel、Google Sheets、Airtable、Notionへ即送信できるほか、CSV/JSONとしても保存できます。しかも無料・無制限です。

Thunderbit の Chrome 拡張機能をダウンロード どんなウェブサイトからでも、数秒でデータ抽出を開始できます。コードは不要です。 Get Started Free

Thunderbitは、とにかく早くデータが欲しい、それでいてコードは書きたくない——そんなチームにぴったりです。Thunderbitで取得してからPythonで分析する、という流れもできます。まさに、両方のいいとこ取りです。

ステップ 6: Pandas で抽出データを整形・分析する

データが手に入ったら(Python経由でもThunderbit経由でも構いません)、次は Pandas で整え、分析にかけましょう。

  1. データを読み込む:

    import pandas as pd
    
    df = pd.read_csv("products.csv")
    print(df.head())
    
  2. データを整える:

    • 重複を取り除く:
      df = df.drop_duplicates()
      
    • 欠損値を処理する:
      df = df.fillna("N/A")
      
    • 形式をそろえる(例:価格):
      df['price'] = df['price'].str.replace('$','').str.replace(',','').astype(float)
      
  3. 分析する:

    • 統計情報を表示する:
      print(df.describe())
      
    • カテゴリごとに集計する:
      avg_price = df.groupby('category')['price'].mean()
      print(avg_price)
      

Pandasは、雑然としたWebデータをビジネスのインサイトへと変えるための万能ナイフです。

ステップ 7: 取得したデータをビジネス利用しやすく整理・保存する

きれいなデータが手元に揃ったら、チームで使える形に落とし込みましょう。

  • CSV / Excel:共有しやすいように df.to_csv("out.csv", index=False)df.to_excel("out.xlsx") を使います。
  • Google SheetsThunderbit の書き出し機能 か、Pythonの gspread ライブラリを使えます。
  • データベース:大きなデータセットなら df.to_sql() でSQLデータベースに保存できます。
  • 自動化:スクリプトやThunderbitのスケジュール機能を仕込んで、データを常に最新に保ちましょう。
  • ベストプラクティス:タイムスタンプを必ず添え、列の意味を文書に残し、機密データならアクセス制御もかけておきます。

肝心なのは、保存先をチームの働き方に合わせることです。すぐ使いたいならスプレッドシート、大規模運用ならデータベース、という具合です。

Thunderbit と Python コーディング、チームに合うのはどちら?

ここで一度、頭を整理しておきましょう。

比較項目Thunderbit(ノーコードAI)Python ライブラリ(コード)
必要なスキルなし(ブラウザベースの UI)Python プログラミングが必要
準備時間数分(AI の提案、即スクレイピング)数時間~数日(コード、デバッグ、設定)
JS / インタラクティブ対応あり、標準対応(ブラウザ/クラウドモード)あり。ただし Selenium / Playwright が必要
保守低い。AI が多くのサイト変更に追従手動。サイト変更のたびにコード更新が必要
スケール中規模(クラウドで数十~数百ページを高速処理)高い(Scrapy なら数千ページ以上まで拡張可能)
カスタマイズUI オプションと AI プロンプトで対応無制限(あらゆるロジック、あらゆる連携)
アンチボット / プロキシ内部で処理自分で実装する必要がある
データ書き出しSheets、Excel、Notion、Airtable に 1 クリックカスタムコードが必要
最適な用途非技術者、すばやい成果、最小限の保守開発者、複雑・大規模な案件

ワンポイントアドバイス:とにかく早く成果を出したいなら、Thunderbitでビジネスチームに力を持たせましょう。一方、踏み込んだカスタマイズや大規模処理が必要ならPythonです。実際には、両方を組み合わせて使うチームが少なくありません。まずThunderbitで手早く検証してデータを集め、あとからPythonで自動化やスケールアップにつなげる、という流れです。

ウェブサイトのデータ抽出を使った実際のビジネス活用

business-web-data-uses.png 実際の現場で、各チームがこれらのツールをどう使っているのか、のぞいてみましょう。

  • Eコマース:John Lewisは、競合価格をスクレイピングして自社価格をリアルタイムに調整し、売上を4%押し上げました
  • 営業:あるチームは月3,000件超のリードをスクレイピングし、営業担当1人あたり週8時間を浮かせています(Thunderbit))。手作業のリサーチは、もう必要ありません。
  • 市場調査:マーケターは、感情分析のために何千ものレビューやSNS投稿を集め、ダッシュボードが更新される前にトレンドの兆しをつかんでいます。
  • 不動産:エージェントは物件情報をスクレイピングし、割安物件や新しい市場機会をいち早く見つけます。MLSの更新を待つよりずっと速いやり方です。
  • 業務自動化:オペレーションチームは、パートナーサイトや社内サイトをスクレイピングして、在庫確認、レポート作成、さらにはサポートFAQの整備まで自動化しています。

多くの場合、ワークフローはハイブリッドになります。Thunderbitでデータを集め、Pythonで整形・分析し、最後にSheetsやデータベースへ書き出してチームで共有する、という流れです。

まとめと重要ポイント

Python(とThunderbit)でWebサイトからデータを取る力は、2026年のいまも、純粋なエンジニア職ではないチームが身につけられるスキルのなかで、いちばんレバレッジの効くものの一つです。いまやAIコーディングエージェントがスクリプトを書いてくれる時代になりましたが、それでも出力を読み、サイト構造が変わったかどうかを見極め、午前2時にセレクターが壊れたときどう動くかを決めるのは、やはり人間です。要点を整理すると、こうなります。

  • Requests + Beautiful Soup:静的サイト向け。速くてシンプルです。
  • Selenium:動的サイト、JSが多いサイト、ログインが要るサイト向けです。
  • Scrapy:大規模・複数ページのクロール向けです。
  • Thunderbit:ノーコードのAIスクレイピング向け。速くて簡単、ビジネスユーザーに最適です。
  • Pandas:データの整形、分析、意味づけに使います。
  • エクスポートは賢く:CSV、Sheets、データベースなど、ワークフローに合うものを選びましょう。

最適なやり方は、自分の技術的な得意分野とビジネス要件に合うツールから始めることです。成長に合わせて、組み合わせて使っていきましょう。ウェブスクレイピングがどれほど手軽か実感してみたいなら、Thunderbit の無料 Chrome 拡張機能を試す か、Thunderbit Blog でさらに詳しいガイドをのぞいてみてください。

スクレイピングを楽しんでください。あなたのデータが、いつもきれいに整い、構造化され、すぐ使える状態でありますように。

Thunderbit AIウェブスクレイパーを無料で試す Get Started Free

FAQ

1. Python を使ってウェブサイトからデータを取得する最も簡単な方法は?
静的サイトなら、RequestsライブラリでHTMLを取得し、Beautiful Soupで必要なデータを解析・抽出するのが基本です。動的サイトでは、たいていSeleniumが必要になります。

2. Python コードの代わりに Thunderbit を使うべきなのはどんなとき?
すぐにデータが欲しい、コードを書きたくない、動的ページやサブページに対応したい、Sheets/Excelへ即書き出したい——こうした場面でThunderbitは力を発揮します。ビジネスユーザーや短納期の案件に向いています。

3. JavaScript でデータを読み込むサイトはどう扱えばいい?
Selenium(またはPlaywright)でブラウザを自動操作するか、JSを自動でさばけるThunderbitのブラウザ/クラウドモードを試してみてください。

4. スクレイピングしたデータをきれいにして分析する最善の方法は?
データをPandasに読み込み、重複を取り除き、欠損値を処理し、形式をそろえてから、groupbyやdescribeで手早くインサイトを引き出しましょう。

5. ウェブスクレイピングはビジネス用途で合法かつ安全ですか?
公開データのスクレイピングは一般的に合法ですが、サイトの利用規約とrobots.txtは必ず確認してください。同意なしに個人データを取るのは避け、サイトのリソースにも配慮しましょう。ThunderbitもPythonも、倫理的なスクレイピングを後押しします。

データ活用を次のステージへ引き上げる準備はできましたか? Thunderbit をダウンロード するか、Pythonで本腰を入れて取り組みましょう。どちらを選んでも、価値あるWebデータをすぐに手にできるようになります。

さらに詳しく

Shuai Guan
Shuai Guan
Thunderbit の CEO | AIデータ自動化のエキスパート Shuai Guan は Thunderbit の CEO であり、ミシガン大学工学部の卒業生です。テクノロジーと SaaS アーキテクチャの分野で約10年にわたる経験をもとに、複雑な AI モデルを、実務で使えるノーコードのデータ抽出ツールへと落とし込むことを得意としています。このブログでは、ウェブスクレイピングや自動化戦略について、実践で磨かれた率直な知見を共有し、より賢くデータ主導のワークフローを構築できるよう支援しています。データワークフローの最適化から離れているときは、同じこだわりと観察眼を写真への情熱にも注いでいます。
Topics
Pythonでウェブサイトからデータを取得する方法

Thunderbitを試す

リードやその他のデータをわずか2クリックで取得。AI搭載。

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