Puppeteerスクレイパーによるウェブスクレイピング徹底ガイド

最終更新日 April 22, 2026

もし、スクロールするたびにコンテンツが読み込まれるサイトや、ログインしないと価格が表示されないページ、頻繁にレイアウトが変わるサイトからデータを取得しようとしたことがあるなら、その大変さはよく分かるはずです。従来の静的なWebスクレイパーでは、もはや対応しきれません。実際、が代替データ収集にWebスクレイピングを活用し、が競合価格を自動モニタリングしています。ですが、こうしたデータの多くはJavaScriptで動的表示されたり、ユーザー操作の後ろに隠れていたりします。ここで活躍するのが、ヘッドレスブラウザ自動化、そして Puppeteer のようなツールです。

私は長年、業務自動化とAIツール開発に携わってきました(営業やオペレーションチーム向けのWebスクレイピングも数多く実施)。その中で、Puppeteerは従来スクレイパーで取得できないデータまで確実に取れることを実感してきました。一方で、コーディングの煩雑さがビジネスユーザーにとって大きな障壁になることも痛感しています。そこで本記事では、Puppeteer Webスクレイパーとは何か、Webスクレイピングでどう使うか、さらにより手軽な代替手段——たとえばAI搭載ノーコードの ——まで一緒に紹介します。

Puppeteer Webスクレイパーとは? 概念を一目で理解

puppeteer-scraper-data-extraction-automation.png まずは基本から。 は Google が開発したオープンソースの Node.js ライブラリで、JavaScript でヘッドレス Chrome / Chromium ブラウザを自在に操作できます。簡単に言えば、画面表示なしでWebページを開き、ボタンをクリックし、フォーム入力やスクロール、データ抽出まで自動で行う“ロボット”のような存在です。

Puppeteerの強みは?

  • 動的コンテンツのレンダリングが可能。JavaScriptで表示される内容も実ユーザーのように取得できます。
  • ユーザー操作の再現:クリック、入力、スクロール、ポップアップ対応なども自由自在。
  • 操作後にデータが表示されるECサイト、SNS、ダッシュボードなどのWebスクレイピングに最適です。

他ツールとの違いは?

  • Selenium:ブラウザ自動化の元祖。複数言語・複数ブラウザに対応しますが、やや重く古い設計です。クロスブラウザテストには強いものの、Chrome/Node.js環境では Puppeteer の方が軽量かつ高速です。
  • Thunderbit:ここが注目ポイント。Thunderbit はノーコード・AI搭載のWebスクレイパーで、ブラウザ上でそのまま動作します。スクリプトの代わりに「AIでフィールド提案」を押すだけで、AIが抽出項目を自動設定。コード不要で即結果を得られるため、ビジネスユーザーに最適です(詳細は後述)。

要するに、**Puppeteer = 最大自由度(コーディングできる人向け)、Thunderbit = 最大手軽さ(コードなしで使いたい人向け)**です。

Puppeteer Webスクレイピングがビジネスユーザーに重要な理由

いまやWebスクレイピングは、ハッカーやデータサイエンティストだけの領域ではありません。営業、オペレーション、マーケティング、不動産など、さまざまなチームがWebデータを活用して競争力を高めています。特に重要な情報が動的サイトの奥に隠れているとき、Puppeteer がその“鍵”になる場面は多いです。

実際の活用例を見てみましょう。

活用シーン主な利用者効果/ROI
リード獲得営業、事業開発見込み顧客リストの自動生成で担当者1人あたり週8時間以上を削減(事例
価格モニタリングEC、商品企画競合価格をリアルタイム追跡。ある企業は年間約38億ウォン相当のコスト削減に成功(出典
市場調査マーケ、戦略、財務投資アドバイザーの67%がWebデータ活用。最大890% ROIの事例も(出典
不動産データ収集仲介、アナリスト50件以上の物件情報を数分で一括収集(出典
コンプライアンス監視オペレーション、法務自動監視で保険会社が約500億ウォン相当の罰金を回避(出典

さらに、が週の1/4を手作業のデータ収集などに費やしているという調査もあります。Webスクレイピング自動化は、もはや“あれば便利”ではなく“競争力の中核”です。

Puppeteer Webスクレイパー入門:セットアップ方法

さっそく始めましょう。JavaScriptに少し慣れていれば、10分以内に Puppeteer を動かせます。

1. Node.js をインストール
Puppeteer は Node.js 上で動作します。 から最新LTS版をインストールしてください。

2. プロジェクトフォルダを作成
ターミナルで以下を実行:

1mkdir puppeteer-scraper-demo
2cd puppeteer-scraper-demo
3npm init -y

3. Puppeteer をインストール

1npm install puppeteer

これで Chromium(約100MB)も自動でダウンロードされます。

4. 最初のスクリプトを作成
scrape.js を作成:

1const puppeteer = require('puppeteer');
2(async () => {
3  const browser = await puppeteer.launch();
4  const page = await browser.newPage();
5  await page.goto('https://example.com', { waitUntil: 'domcontentloaded' });
6  const title = await page.title();
7  console.log('Page title:', title);
8  await browser.close();
9})();

実行:

1node scrape.js

Page title: Example Domain が表示されれば、Chrome自動操作は成功です。

Puppeteerで実践!最初のWebスクレイピングスクリプト

実際にやってみましょう。例えば から名言を取得するなら:

ステップ1:ページへアクセス

1await page.goto('http://quotes.toscrape.com', { waitUntil: 'networkidle0' });

ステップ2:データ抽出

1const quotes = await page.evaluate(() => {
2  return Array.from(document.querySelectorAll('.quote')).map(node => ({
3    text: node.querySelector('.text')?.innerText.trim(),
4    author: node.querySelector('.author')?.innerText.trim(),
5    tags: Array.from(node.querySelectorAll('.tag')).map(tag => tag.innerText.trim())
6  }));
7});
8console.log(quotes);

ステップ3:ページネーション

1let hasNext = true;
2let allQuotes = [];
3while (hasNext) {
4  // 上記のように名言を抽出
5  const quotes = await page.evaluate(/* ... */);
6  allQuotes.push(...quotes);
7  const nextButton = await page.$('li.next > a');
8  if (nextButton) {
9    await Promise.all([
10      page.click('li.next > a'),
11      page.waitForNavigation({ waitUntil: 'networkidle0' })
12    ]);
13  } else {
14    hasNext = false;
15  }
16}

ステップ4:JSON保存

1const fs = require('fs');
2fs.writeFileSync('quotes.json', JSON.stringify(allQuotes, null, 2));

これでページ遷移、データ抽出、保存まで自動化完了です。

実践Tips:動的コンテンツ対応のPuppeteerテクニック

実際のサイトはもっと複雑です。次のTipsが役立ちます。

1. 動的要素を待機

1await page.waitForSelector('.product-list-item');

必要要素が表示されるまで待つことで、取りこぼしを防げます。

2. ユーザー操作を再現

  • ボタンクリック: await page.click('#load-more');
  • 入力フィールド: await page.type('#search', 'laptop');
  • 無限スクロール対応:
    1let previousHeight = await page.evaluate('document.body.scrollHeight');
    2while (true) {
    3  await page.evaluate('window.scrollTo(0, document.body.scrollHeight)');
    4  await page.waitForTimeout(1500);
    5  const newHeight = await page.evaluate('document.body.scrollHeight');
    6  if (newHeight === previousHeight) break;
    7  previousHeight = newHeight;
    8}

3. ログイン処理

1await page.goto('https://exampleshop.com/login');
2await page.type('#login-username', 'myusername');
3await page.type('#login-password', 'mypassword');
4await page.click('#login-button');
5await page.waitForNavigation({ waitUntil: 'networkidle0' });

4. AJAXデータ抽出 データがDOMではなくAPI経由で来る場合は、ネットワークレスポンスをフック:

1page.on('response', async response => {
2  if (response.url().includes('/api/products')) {
3    const data = await response.json();
4    // データ処理
5  }
6});

実例:ECサイトの商品データをスクレイピング

ここまでの内容を組み合わせて、(デモ用)ECサイトでログイン後に商品名・価格・画像を取得する例です。

1const puppeteer = require('puppeteer');
2const fs = require('fs');
3(async () => {
4  const browser = await puppeteer.launch({ headless: true });
5  const page = await browser.newPage();
6  // ステップ1:ログイン
7  await page.goto('https://exampleshop.com/login');
8  await page.type('#login-username', 'myusername');
9  await page.type('#login-password', 'mypassword');
10  await page.click('#login-button');
11  await page.waitForNavigation({ waitUntil: 'networkidle0' });
12  // ステップ2:カテゴリページへ移動
13  await page.goto('https://exampleshop.com/category/laptops', { waitUntil: 'networkidle0' });
14  // ステップ3:商品データ抽出
15  const products = await page.evaluate(() => {
16    return Array.from(document.querySelectorAll('.product-item')).map(item => ({
17      name: item.querySelector('.product-title')?.innerText.trim() || '',
18      price: item.querySelector('.product-price')?.innerText.trim() || '',
19      image: item.querySelector('img.product-image')?.src || ''
20    }));
21  });
22  // ステップ4:JSON保存
23  fs.writeFileSync('products.json', JSON.stringify(products, null, 2));
24  await browser.close();
25})();

このスクリプトは、ログインからデータ抽出・保存まで完全自動化。さらに高度な用途として、ページ送りや詳細ページ巡回も追加できます。

Thunderbit:AIでPuppeteerスクレイパーをもっと簡単に

「ここまで読んだけど、毎回コードを書くのはちょっと…」という方も大丈夫。そんなときこそ です。

Thunderbitの特徴

  • コード不要 を入れ、対象ページで「AIでフィールド提案」を押すだけ。
  • AI自動フィールド認識: Thunderbit がページを解析し、「商品名」「価格」「画像」など最適カラムを自動提案。
  • 動的コンテンツにも対応: 無限スクロール、ポップアップ、サブページもAIが自動処理。ページ送りや詳細巡回も安心。
  • 即時エクスポート: Excel、Googleスプレッドシート、Notion、Airtableへワンクリック出力。追加料金なし。
  • 人気サイト向けテンプレート: Amazon、Zillow、LinkedInなど主要サイトはテンプレートですぐ利用可能。
  • クラウド/ブラウザ両対応: 大量データもクラウドで最大50ページ同時スクレイピング可能。

「このデータが欲しい!」と思ってから5分以内にスプレッドシート化できるユーザーも多いです。さらに、サイト構造が変わってもAIが自動追従するため、スクリプト修正の心配も減ります。

Puppeteer vs. Thunderbit:自分に合うWebスクレイピングツールの選び方

どちらを使うべきか? チーム別に整理すると次の通りです。

比較項目Puppeteer(コード型)Thunderbit(ノーコード・AI)
使いやすさJavaScriptやDOMの知識が必要ポイント&クリック、AIが自動でフィールド提案
導入スピード複雑な作業は数時間〜数日インストール後すぐ、数分で利用開始
柔軟性/制御力カスタムロジック・システム連携も自由標準用途は柔軟、特殊ワークフローにはやや制限
動的コンテンツ対応待機・クリック・スクロールを自前で実装AIが動的コンテンツ、ページ送り、サブページまで自動処理
保守性スクリプトを自前管理。サイト変更ごとに修正AIがレイアウト変化に自動対応。ユーザー負担を最小化
データ出力エクスポートも自前実装Excel、Sheets、Notion、Airtable、CSV、JSONへワンクリック出力
推奨ユーザー開発者、カスタマイズ重視、大規模スクレイピングビジネスユーザー、スピード重視、非開発チーム
コスト無料(ただし人件費/インフラは自社負担)無料プランあり。従量課金(Thunderbit料金表参照)

まとめ:

  • Puppeteer は、細かな制御やシステム連携が必要で、開発リソースがある場合に最適。
  • Thunderbit は、スピード・手軽さ・非開発者の業務自動化に強くおすすめ。

実際には、両方を併用するチームも多いです。Thunderbit で素早くプロトタイプや日常業務を自動化し、Puppeteer で大規模・特殊処理を担う、といった形です。

チェックリスト:Puppeteer Webスクレイピング成功の10ステップ

scraping-project-checklist-steps.png Puppeteerプロジェクトをスムーズに進めるために、私が常に使っているチェックリストです。

  1. 目的を明確化:どのデータが必要で、どこにあるか?
  2. サイト分析:動的サイトか? ログイン必要か? Bot対策はあるか?
  3. 環境構築:Node.js、Puppeteer、必要ライブラリを準備
  4. PoC作成:まず1ページで動作確認、セレクタ精度を高める
  5. 動的対応waitForSelector、クリック、スクロールを積極活用
  6. ページ送り/ループ追加:全ページを漏れなく収集
  7. ブロック対策:ランダム遅延、User-Agent設定、必要ならプロキシ
  8. 出力/検証:JSON/CSV保存、欠損チェック
  9. 最適化/エラーハンドリング:try/catch、進捗ログ、欠損値対応
  10. 監視/保守:サイト変更に備えた更新体制を整備

トラブルシューティングTips:

  • セレクタが null なら、HTML構造と待機処理を再確認
  • ブロックされたら速度を落とし、IP変更やステルスプラグインを検討
  • スクリプトが落ちるなら、メモリリークや例外処理を再点検

まとめ & 重要ポイント

Webスクレイピングは、データドリブンなチームに必須のスキルになりました。Puppeteer なら動的・JavaScriptベースのサイトでも自由にデータ取得できますが、コーディングと保守の負担は避けられません。一方、Thunderbit はAI搭載ノーコードなので、誰でもすぐ使える柔軟な代替手段です。

おすすめの使い分け:

  • 技術力があり、細かなカスタマイズが必要なら Puppeteer
  • スピード・手軽さ・保守性重視なら から始めるのがおすすめ)
  • 多くのチームは両者を併用し、ほぼすべてのWebデータニーズをカバーしています

より詳しいガイドや最新情報は で確認できます。

Thunderbit AI Webスクレイパーを試す

よくある質問(FAQ)

1. Puppeteer Webスクレイパーとは? なぜWebスクレイピングで使われるのですか?
PuppeteerはNode.js向けライブラリで、JavaScriptでヘッドレスChromeを操作できます。動的コンテンツ抽出やユーザー操作再現が可能なため、従来スクレイパーでは難しいサイトでもデータ取得できます。

2. Puppeteer、Selenium、Thunderbitの違いは?
Seleniumは複数ブラウザ・複数言語に対応しますがやや重いです。PuppeteerはChrome/Node.js特化で軽量かつ高速。ThunderbitはノーコードAI搭載で、非開発者でも数クリックでデータ抽出可能です。

3. Puppeteerスクレイピングの主なビジネス上の利点は?
データ収集の自動化により工数削減、ミス防止、リアルタイム分析が可能です。リード獲得、価格調査、市場分析など幅広く活用できます。

4. Puppeteerスクレイピングの主な課題は?
動的コンテンツ対応、Bot対策回避、サイト変更時のスクリプト保守が主な課題です。待機や操作自動化、エラー処理などの実装が必要です。

5. Thunderbitはどんな時におすすめですか?
コードなしで素早く結果が必要なとき、または非開発チームにも使わせたいときに最適です。標準的なスクレイピングやExcel/Google Sheets出力も簡単です。

よりスマートなスクレイピングを体験したい方は、 のガイドもぜひご覧ください。Happy Scraping!

さらに読みたい方へ

Topics
PuppeteerスクレイパーPuppeteerウェブスクレイピング
目次

Thunderbitを試す

リードやその他のデータをたった2クリックで抽出。AI搭載。

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