
Aloísio Vítor
Image Processing Expert

ウェブスクレイピングは、ウェブサイトの変更を監視してデータ収集を自動化するのに不可欠なツールになっています。このブログ記事では、PuppeteerというNode.jsライブラリを使用して、ウェブスクレイピング、ウェブサイトの変更の検出、およびこれらの変更のスクリーンショットを取得する方法について説明します。
Puppeteerは、DevToolsプロトコルを介してヘッドレスChromeまたはChromiumを制御するための高レベルAPIを提供するNode.jsライブラリです。ウェブスクレイピング、自動テスト、さらにはウェブページのスクリーンショットやPDFの生成に使用できます。
始める前に、以下がインストールされていることを確認してください。
ターミナルで次のコマンドを実行してPuppeteerをインストールできます。
npm install puppeteer
まずは、ウェブサイトにアクセスしてテキストコンテンツを抽出する基本的なウェブスクレーパーを作成しましょう。
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を使用すると、ウェブページのスクリーンショットを簡単に取得できます。ページ全体のスクリーンショットまたはページの特定の領域をキャプチャできます。
ページ全体のスクリーンショットを取得する方法は次のとおりです。
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を変更して、異なるファイル名または場所を指定できます。
ウェブサイトの変更を監視することは、ウェブスクレイピングで便利な機能です。これを実現するには、ウェブサイトのコンテンツを繰り返しチェックし、以前に保存したバージョンと比較します。
テキストの変更を検出して、コンテンツが変更された場合にスクリーンショットを取得する例を次に示します。
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をインストールします。
npm install node-cron
次に、スクリプトを変更して、設定された間隔(例:5分ごと)で実行します。
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を使用して基本的なウェブスクレイピング、ウェブサイトの変更の検出、およびこれらの変更のスクリーンショットを取得する方法を説明しました。これらのテクニックを使用すると、ウェブサイトを監視し、更新を自動的に追跡できます。ウェブサイトのスクレイピングポリシーを確認して、利用規約に違反しないようにしてください。
