LoginSignup
1
3

More than 5 years have passed since last update.

puppeteerを使ってスクリーンショットを撮る

Last updated at Posted at 2017-10-18

PhantomJSを使った処理を作っていたら、なんかうまくいかなかったので
Googleが作っているというnode.jsからchromiumを実行するモジュール「puppeteer」を使った時のメモ

インストール

実行環境はCentos7.3
まずはnpmコマンドでモジュールのインストールをします。

npm install puppeteer -g

このコマンドでpuppetterとchromiumがグローバルインストールされます。

しかし、これだけでは依存関係のすべてがインストールされるわけではないので、
足りないものがある場合は別途インストールする必要があります。

puppeteerがインストールされているディレクトリに移動して
依存関係の一覧と有無を確認します

cd node_modules/puppeteer/.local-chromium/linux-499413/chrome-linux
ldd ./chrome

このコマンドで出力される内容の内、not found になっているものをyum等を使ってインストールします。

インストールした後、もう一度同じようにコマンドを実行し、not found がなくなればOKです

実行

puppeteerをrootユーザーで実行する場合は

test.js
puppeteer.lunch()

ではエラーになるので

以下のように明示的に--no-sandboxのオプションを付ける必要がある

puppeteer.lunch({args: ['--no-sandbox']})

実際に使うとこんな感じ

screenshot.js
async function screenShot (url){

 var puppeteer = require("puppeteer")

  try{

    const browser = await puppeteer.launch({ args: ['--no-sandbox'], timeout: 30000 });
    const page = await browser.newPage();

    await page.goto(url);
    await page.screenshot({ "path": "path/to/png or jpg" });
    await browser.close();

  console.log("OK")

  }catch(e){
    console.log(e)
  }
}

スクリーンショットを取ってくるサンプルです。
画面サイズの指定がないので、見切れたりするかも・・

ちなみに、puppeteerはPromiseベースなのでasync/awaitと相性がいいです。

1
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
3