puppeteer - Node.js

puppeteer インストール

次のコードを実行すると、Chromium の最新バージョンが含まれます。

npm install puppeteer

Chromium を含めない場合は、次のようにします。

npm install puppeteer-core

ローカルファイルで試してみる

index.html

<!DOCTYPE html>
<html lang="ja">
<head>
  <meta charset="UTF-8">
  <script src="script.js"></script>
  <title>Document</title>
</head>
<body>
  <div id="target" class="target_class">
    <p>text</p>
  </div>
</body>
</html>

script.js

const puppeteer = require('puppeteer');

(async () => {
  // Puppeteerの起動.
  const browser = await puppeteer.launch({
    headless: false, // Headlessモードで起動するかどうか.
    slowMo: 50, // 指定のミリ秒スローモーションで実行する.
  });

  // 新しい空のページを開く.
  const page = await browser.newPage();

  await page.goto('file:///D:/node/index.html');
  await page.waitForSelector('#target');
  let target = await page.$("#target");
  let text = await (await target.getProperty('textContent')).jsonValue();
  console.log(text);
  await browser.close();
})();

クラス名を取得してみる

index.html

<!DOCTYPE html>
<html lang="ja">
<head>
  <meta charset="UTF-8">
  <script src="script.js"></script>
  <title>Document</title>
</head>
<body>
  <div id="target" class="target_class">
    <p>text</p>
  </div>
</body>
</html>

script.js

const puppeteer = require('puppeteer');

(async () => {
  const browser = await puppeteer.launch({
    headless: false,
    slowMo: 50,
  });

  const page = await browser.newPage();

  await page.goto('file:///D:/node/main.html');
  await page.waitForSelector('#target');
  let target = await page.$("#target");
  let text = await (await target.getProperty('className')).jsonValue();
  console.log(text);
  await browser.close();
})();

Sample

Microsoft Bing の翻訳サイトで英語を日本語に訳したものを取得するサンプルです。

外部サイトのため連続でするとサイトに迷惑をかける場合がある為、利用には十分に注意してください。

script.js

const puppeteer = require('puppeteer');

(async () => {
  // Puppeteerの起動.
  const browser = await puppeteer.launch({
    headless: false,
    slowMo: 100,
  });

  // 新しい空のページを開く.
  const page = await browser.newPage();

  await page.goto('https://www.bing.com/translator?to=ja&setlang=ja');
  await page.waitForSelector('#tta_input_ta');
  await page.type("#tta_input_ta", "apple");
  let target = await page.$("#tta_output_ta");
  await page.waitForSelector('#tta_output_ta');

  let text = await (await target.getProperty('value')).jsonValue();
  console.log(text);
  
  await browser.close();
})();