もし、スクロールするたびにコンテンツが読み込まれるサイトや、ログインしないと価格が表示されないページ、頻繁にレイアウトが変わるサイトからデータを取得しようとしたことがあるなら、その大変さはよく分かるはずです。従来の静的なWebスクレイパーでは、もはや対応しきれません。実際、が代替データ収集にWebスクレイピングを活用し、が競合価格を自動モニタリングしています。ですが、こうしたデータの多くはJavaScriptで動的表示されたり、ユーザー操作の後ろに隠れていたりします。ここで活躍するのが、ヘッドレスブラウザ自動化、そして Puppeteer のようなツールです。
私は長年、業務自動化とAIツール開発に携わってきました(営業やオペレーションチーム向けのWebスクレイピングも数多く実施)。その中で、Puppeteerは従来スクレイパーで取得できないデータまで確実に取れることを実感してきました。一方で、コーディングの煩雑さがビジネスユーザーにとって大きな障壁になることも痛感しています。そこで本記事では、Puppeteer Webスクレイパーとは何か、Webスクレイピングでどう使うか、さらにより手軽な代替手段——たとえばAI搭載ノーコードの ——まで一緒に紹介します。
Puppeteer Webスクレイパーとは? 概念を一目で理解
まずは基本から。 は 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 がその“鍵”になる場面は多いです。
実際の活用例を見てみましょう。
さらに、が週の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ステップ
Puppeteerプロジェクトをスムーズに進めるために、私が常に使っているチェックリストです。
- 目的を明確化:どのデータが必要で、どこにあるか?
- サイト分析:動的サイトか? ログイン必要か? Bot対策はあるか?
- 環境構築:Node.js、Puppeteer、必要ライブラリを準備
- PoC作成:まず1ページで動作確認、セレクタ精度を高める
- 動的対応:
waitForSelector、クリック、スクロールを積極活用 - ページ送り/ループ追加:全ページを漏れなく収集
- ブロック対策:ランダム遅延、User-Agent設定、必要ならプロキシ
- 出力/検証:JSON/CSV保存、欠損チェック
- 最適化/エラーハンドリング:try/catch、進捗ログ、欠損値対応
- 監視/保守:サイト変更に備えた更新体制を整備
トラブルシューティングTips:
- セレクタが null なら、HTML構造と待機処理を再確認
- ブロックされたら速度を落とし、IP変更やステルスプラグインを検討
- スクリプトが落ちるなら、メモリリークや例外処理を再点検
まとめ & 重要ポイント
Webスクレイピングは、データドリブンなチームに必須のスキルになりました。Puppeteer なら動的・JavaScriptベースのサイトでも自由にデータ取得できますが、コーディングと保守の負担は避けられません。一方、Thunderbit はAI搭載ノーコードなので、誰でもすぐ使える柔軟な代替手段です。
おすすめの使い分け:
- 技術力があり、細かなカスタマイズが必要なら Puppeteer
- スピード・手軽さ・保守性重視なら (から始めるのがおすすめ)
- 多くのチームは両者を併用し、ほぼすべての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!
さらに読みたい方へ