Puppeteerは、Node.jsで動作するヘッドレスChrome(またはChromium)のAPIです。Puppeteerを使用すると、ウェブページのスクリーンショットを撮影したり、ページのHTMLを取得したりすることができます。以下にPuppeteerを使用してページのHTMLを取得する方法をいくつか紹介します。
方法1: 単純な例
まず、Puppeteerをインストールします:
npm install puppeteer
次に、以下のコードを使用してページのHTMLを取得します:
const puppeteer = require('puppeteer');
(async () => {
const browser = await puppeteer.launch();
const page = await browser.newPage();
await page.goto('https://example.com');
const html = await page.content();
console.log(html);
await browser.close();
})();
この例では、Puppeteerを使用してexample.comにアクセスし、そのページのHTMLを取得し、コンソールに出力しています。
方法2: ページの待機
ウェブページがJavaScriptを使用して動的に生成される場合、PuppeteerでページのHTMLを取得する前に、ページの読み込みが完了するのを待つ必要があります。以下のコードは、ページが完全に読み込まれるまで待機する方法を示しています:
const puppeteer = require('puppeteer');
(async () => {
const browser = await puppeteer.launch();
const page = await browser.newPage();
await page.goto('https://example.com');
await page.waitForSelector('body'); // body要素が読み込まれるまで待機
const html = await page.content();
console.log(html);
await browser.close();
})();
この例では、waitForSelector
メソッドを使用して、body
要素が読み込まれるまで待機しています。
方法3: スクリーンショットとHTMLの保存
Puppeteerを使用してページのスクリーンショットを撮ると同時に、HTMLも保存することもできます。以下のコードは、スクリーンショットとHTMLの保存方法を示しています:
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 html = await page.content();
const screenshot = await page.screenshot({ path: 'screenshot.png' });
fs.writeFileSync('page.html', html);
console.log(html);
await browser.close();
})();
この例では、screenshot
メソッドを使用してスクリーンショットを撮り、fs
モジュールを使用してHTMLをファイルに保存しています。
これらはPuppeteerを使用してページのHTMLを取得するいくつかの一般的な方法です。必要に応じて、これらの例をカスタマイズして使用することができます。ただし、ウェブスクレイピングを行う場合は、サイトの利用規約や法的な制限に注意してください。