CAPSOLVER
ブログ
Puppeteer を使った Web スクレイピング: ウェブサイトの変更を検知し、スクリーンショットを取得する

Puppeteer を使ったウェブスクレイピング:ウェブサイトの変更を検知してスクリーンショットを撮る

Logo of CapSolver

Aloísio Vítor

Image Processing Expert

27-Sep-2024

ウェブスクレイピングは、ウェブサイトの変更を監視してデータ収集を自動化するのに不可欠なツールになっています。このブログ記事では、PuppeteerというNode.jsライブラリを使用して、ウェブスクレイピング、ウェブサイトの変更の検出、およびこれらの変更のスクリーンショットを取得する方法について説明します。

Puppeteerとは?

Puppeteerは、DevToolsプロトコルを介してヘッドレスChromeまたはChromiumを制御するための高レベルAPIを提供するNode.jsライブラリです。ウェブスクレイピング、自動テスト、さらにはウェブページのスクリーンショットやPDFの生成に使用できます。

事前準備

始める前に、以下がインストールされていることを確認してください。

ターミナルで次のコマンドを実行してPuppeteerをインストールできます。

bash Copy
npm install puppeteer

Puppeteerを使用した基本的なウェブスクレイピング

まずは、ウェブサイトにアクセスしてテキストコンテンツを抽出する基本的なウェブスクレーパーを作成しましょう。

javascript Copy
const puppeteer = require('puppeteer');

(async () => {
    const browser = await puppeteer.launch();
    const page = await browser.newPage();

    // ウェブサイトに移動
    await page.goto('https://example.com');

    // テキストコンテンツを抽出
    const content = await page.evaluate(() => {
        return document.querySelector('h1').innerText;
    });

    console.log('ページコンテンツ:', content);

    await browser.close();
})();

このスクリプトは、ヘッドレスブラウザを開き、example.comに移動し、<h1>要素からテキストを抽出します。URLをスクレイピングするウェブサイトに置き換え、セレクトを対象の要素に合わせて調整できます。

Puppeteerを使用したスクリーンショットの取得

Puppeteerを使用すると、ウェブページのスクリーンショットを簡単に取得できます。ページ全体のスクリーンショットまたはページの特定の領域をキャプチャできます。

ページ全体のスクリーンショットを取得する方法は次のとおりです。

javascript Copy
const puppeteer = require('puppeteer');

(async () => {
    const browser = await puppeteer.launch();
    const page = await browser.newPage();

    // ウェブサイトに移動
    await page.goto('https://example.com');

    // ページ全体のスクリーンショットを取得
    await page.screenshot({ path: 'screenshot.png', fullPage: true });

    await browser.close();
})();

このスクリプトは、ページ全体のスクリーンショットをscreenshot.pngとして保存します。pathを変更して、異なるファイル名または場所を指定できます。

ウェブサイトの変更の検出

ウェブサイトの変更を監視することは、ウェブスクレイピングで便利な機能です。これを実現するには、ウェブサイトのコンテンツを繰り返しチェックし、以前に保存したバージョンと比較します。

テキストの変更を検出して、コンテンツが変更された場合にスクリーンショットを取得する例を次に示します。

javascript Copy
const puppeteer = require('puppeteer');
const fs = require('fs');

(async () => {
    const browser = await puppeteer.launch();
    const page = await browser.newPage();

    // ウェブサイトに移動
    await page.goto('https://example.com');

    // テキストコンテンツを抽出
    const currentContent = await page.evaluate(() => {
        return document.querySelector('h1').innerText;
    });

    const previousContentPath = 'previous-content.txt';
    let previousContent = '';

    // 前のコンテンツが存在するか確認
    if (fs.existsSync(previousContentPath)) {
        previousContent = fs.readFileSync(previousContentPath, 'utf8');
    }

    // 現在のコンテンツと前のコンテンツを比較
    if (currentContent !== previousContent) {
        console.log('コンテンツが変更されました!');

        // 新しいコンテンツを保存
        fs.writeFileSync(previousContentPath, currentContent);

        // 変更のスクリーンショットを取得
        await page.screenshot({ path: `screenshot-${Date.now()}.png`, fullPage: true });
        console.log('スクリーンショットが保存されました!');
    } else {
        console.log('変更は検出されませんでした。');
    }

    await browser.close();
})();

この例では:

  • スクリプトは<h1>要素のコンテンツを抽出します。
  • 現在のコンテンツを以前に保存したバージョン(previous-content.txt)と比較します。
  • 変更が検出されると、スクリーンショットを取得してファイル名にタイムスタンプを付加して保存します。これにより、各スクリーンショットがユニークになります。
  • 新しいコンテンツは、将来の比較のためにprevious-content.txtに保存されます。

スクリプトの定期的な実行のスケジュール設定

node-cronパッケージを使用して、Node.jsでこのスクリプトを一定の間隔で実行するようにスケジュール設定できます。

まず、node-cronをインストールします。

bash Copy
npm install node-cron

次に、スクリプトを変更して、設定された間隔(例:5分ごと)で実行します。

javascript Copy
const puppeteer = require('puppeteer');
const fs = require('fs');
const cron = require('node-cron');

cron.schedule('*/5 * * * *', async () => {
    const browser = await puppeteer.launch();
    const page = await browser.newPage();

    await page.goto('https://example.com');

    const currentContent = await page.evaluate(() => {
        return document.querySelector('h1').innerText;
    });

    const previousContentPath = 'previous-content.txt';
    let previousContent = '';

    if (fs.existsSync(previousContentPath)) {
        previousContent = fs.readFileSync(previousContentPath, 'utf8');
    }

    if (currentContent !== previousContent) {
        console.log('コンテンツが変更されました!');
        fs.writeFileSync(previousContentPath, currentContent);
        await page.screenshot({ path: `screenshot-${Date.now()}.png`, fullPage: true });
        console.log('スクリーンショットが保存されました!');
    } else {
        console.log('変更は検出されませんでした。');
    }

    await browser.close();
});

このスクリプトは、5分ごと(*/5 * * * *)に実行され、ウェブサイトの変更をチェックします。変更が検出されると、スクリーンショットを取得して更新をログに記録します。

ボーナスコード

CapSolverでトップのキャプチャソリューションのボーナスコードを獲得しましょう:scrape。コードを引き換えると、リチャージごとに5%のボーナスが追加で付与されます。無制限です。

まとめ

Puppeteerは、ウェブスクレイピングとブラウザタスクの自動化に強力なツールです。この記事では、Puppeteerを使用して基本的なウェブスクレイピング、ウェブサイトの変更の検出、およびこれらの変更のスクリーンショットを取得する方法を説明しました。これらのテクニックを使用すると、ウェブサイトを監視し、更新を自動的に追跡できます。ウェブサイトのスクレイピングポリシーを確認して、利用規約に違反しないようにしてください。

Copy

コンプライアンス免責事項: このブログで提供される情報は、情報提供のみを目的としています。CapSolverは、すべての適用される法律および規制の遵守に努めています。CapSolverネットワークの不法、詐欺、または悪用の目的での使用は厳格に禁止され、調査されます。私たちのキャプチャ解決ソリューションは、公共データのクローリング中にキャプチャの問題を解決する際に100%のコンプライアンスを確保しながら、ユーザーエクスペリエンスを向上させます。私たちは、サービスの責任ある使用を奨励します。詳細については、サービス利用規約およびプライバシーポリシーをご覧ください。

もっと見る

Webスクレイピングのブロックをどう対処するか:実践的な方法
ウェブスクレイピングのブロックの対処法: 実用的な方法

ウェブスクレイピングのブロックを効果的に対処する方法を学びましょう。実用的な方法、ボット検出に関する技術的な洞察、およびデータ抽出のための信頼性の高いソリューションを発見してください。

the-other-captcha
Logo of CapSolver

Ethan Collins

03-Apr-2026

CAPTCHAを解くAPIの応答時間を最適化して、オートメーションを高速化する
CAPTCHA 解消 API の応答時間を最適化して、より高速なオートメーションを実現する

高速で信頼性の高いオートメーションのために、CAPTCHA解決APIの応答時間を最適化する方法を学びましょう。このガイドでは、CAPTCHAの複雑さ、APIのパフォーマンス、ポーリング戦略などの重要な要因をカバーし、CapSolverを使用した実践的なヒントで10秒未満の解決時間を実現します。

Logo of CapSolver

Sora Fujimoto

03-Apr-2026

ウェブスクレイピング検出回避技術: 安定したデータ抽出
ウェブスクレイピング検出回避技術: 安定したデータ抽出

ウェブスクレイピングの検出を回避する技術をマスターして、安定したデータ抽出を確保してください。IPローテーション、ヘッダー最適化、ブラウザファイngerprint、およびCAPTCHAの解決方法を使用して、検出を回避する方法を学びましょう。

Logo of CapSolver

Anh Tuan

03-Apr-2026

CAPTCHA 解消 API vs 手動解消: コスト & 効率 (2026年)
CAPTCHA解決API対手動解決: コストと効率 (2026年)

CAPTCHAを解くAPIと手動による解決を比較してみましょう。コスト、スピード、効率について学びましょう。なぜCapSolverのようなAIを搭載したAPIが自動化のための最適な選択肢なのかを発見しましょう。

Logo of CapSolver

Adélia Cruz

03-Apr-2026

CAPTCHAを解くAPIの応答時間について説明します: スピードとパフォーマンスの要因
CAPTCHAを解くAPIの応答時間の説明:スピードとパフォーマンスの要因

CAPTCHAを解くAPIの応答時間、自動化への影響、および速度に影響を与える主要な要因を理解する。パフォーマンスを最適化する方法を学び、迅速なCAPTCHA解決のために効率的なソリューション(例: CapSolver)を活用する方法を学ぶ。

The other captcha
Logo of CapSolver

Emma Foster

03-Apr-2026

CAPTCHAを解くAPIとは?その仕組みといつ使うべきか
CAPTCHAを解くAPIとは? 仕組みと使用するタイミング

CAPTCHAを解くAPIとは何か、どのように機能するか、そして自動化にいつ使うかを学びましょう。ウェブスクラピングにおけるAIを活用したCAPTCHA解決の利点を発見してください。

The other captcha
Logo of CapSolver

Sora Fujimoto

02-Apr-2026