ヘッドレスChrome puppeteer / puppeteer-core をインストールする

● puppeteerのインストールと検証

npm i puppeteer
vi test_puppeteer.js

以下の内容で保存します。

const puppeteer = require('puppeteer');

(async () => {
  const browser = await puppeteer.launch({ args: ['--no-sandbox', '--disable-setuid-sandbox'] });

  const page = await browser.newPage();
  await page.goto('https://google.co.jp/');
  await page.screenshot({path: __dirname + '/test_puppeteer.png'});
  await browser.close();
})();

実行します

node test_puppeteer.js

● libX11-xcb.so.1 が読み込めないというエラーが表示される場合

libX11-xcb.so.1: cannot open shared object file: No such file or directory

と言うようなエラーが表示される場合があります

・libX11-xcb.so.1の場合

chromiumをインストールします(Centos stream)

dnf install -y chromium

・libXss.so.1の場合

libXScrnSaverをインストールします(Centos stream)

dnf install -y chromium

その他参考 : https://github.com/puppeteer/puppeteer/issues/5361

● puppeteer-core のインストールと検証

puppeteer と puppeteer-coreの違いは?

puppeteerをインストールした場合はGoogle Chromeのバイナリを追加でダウンロードします。
puppeteer-coreは使用しているマシンに既にインストール済みのGoogle Chromeを使用します。(Google Chromeのダウンロードは行いません)
npm i puppeteer-core
vi test02.js
const puppeteer = require('puppeteer-core');

(async () => {
  const browser = await puppeteer.launch({
        executablePath: '/Applications/Google Chrome.app/Contents/MacOS/Google Chrome',    
  });
  const page = await browser.newPage();
  await page.goto('https://google.co.jp/');
  await page.screenshot({path: 'test02.png'});

  await browser.close();
})();
node test02.js

● Sandboxエラーとなる場合は

  const browser = await puppeteer.launch();

  ↓

  const browser = await puppeteer.launch({ args: ['--no-sandbox', '--disable-setuid-sandbox'] });

 としておきましょう。

No.1667
01/20 09:24

edit