Puppeteerを使用してページのHTMLを取得する方法


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を取得するいくつかの一般的な方法です。必要に応じて、これらの例をカスタマイズして使用することができます。ただし、ウェブスクレイピングを行う場合は、サイトの利用規約や法的な制限に注意してください。