docker-composeで日本語対応のHeadless Chromeを「puppeteer」で操作する手順です。
🐠 Dockerfile
日本語対応のChromeの入ったDockerfile
は次のように記述します。
FROM ubuntu:latest |
🐹 docker-compose.yml
docker-compose.yml
は次のように記述します。
version: '3' |
あとはdocker-compose build
でイメージを作成します。
🐯 puppeteer
puppeteer
をインストールします。
yarn init |
package.json
に以下を追加します。
"scripts": { |
ブラウザを操作するpuppeteer.js
はこちら。
const puppeteer = require('puppeteer'); |
作成した結果を試してみます。
# bashを起動 |
これでブラウザの操作結果のスクリーンショットを取得できます。
🚕 Dockerfile
GitHubとDocker Hubにファイルを公開しました。
- https://github.com/morizyun/headless-chrome-puppeteer-japanese
- https://hub.docker.com/r/morizyun/headless-chrome-puppeteer-japanese/
🏈 補足:puppeteerの使い方
セレクトタグの選択
フォームのselect
タグを選択する方法です。
await page.evaluate(() => { |
タイムアウトを長くする
タイムアウトを長くしたい場合は、page.goto
のオプションでtimeout
を指定すると良さそうです。
await page.goto('https://example.com/', { timeout: 3000000 }); |
スクリーンサイズの変更
スクリーンのサイズは次の設定で指定できます。できるだけメモリ消費を抑えるために小さめで設定した方が良さそうです。
page.setViewport({ width: 320, height: 640 }); |
Deviceのエミュレート
スマートフォンやタブレットのブラウザをエミュレートすることも比較的容易です。次のように記述します。
const puppeteer = require('puppeteer'); |
Page crash対策
Dockerがデフォルトで準備する一時ファイル領域は64MBで、一般的な装飾のサイトではこの容量を超えてしまい、Page crash
することがありました。docker run
コマンドの場合はオプション--shm-size=256m
、docker-compose
ファイルの場合はshm_size: 256
を指定すると良さそうです。
Chromeエラーのダンプ
Chromeのアウトプットを標準出力煮出す場合はこちら。
const browser = await Puppeteer.launch({ dumpio: true }); |
🏀 参考リンク
- Puppeteer を CLI で動かす Docker イメージ作った
- Dockerを使ってHeadless Chromeを動かしてみる
- –headless時代の本命? Chrome を Node.jsから操作するライブラリ puppeteer について
- Headless ChromeをDockerに入れてGebで遊んでみた
- puppeteerとAVAでE2Eテストしてみる
- How to Install the Latest Versions of NodeJS and NPM for Ubuntu 14.04 LTS
- bufferings/sandbox-gebheadlesschrome
- alekzonder/docker-puppeteer
- pastelsky/node-chrome-headless
- Chrome Headless doesn’t launch on Debian · GoogleChrome/puppeteer
- Constantly getting Navigation Timeout Error · Issue #782
- Docker上のpuppeteerがPage crashしてしまうときはshmサイズを疑う
- Chrome seems to have a hard limit when taking screenshots of tall pages · Issue #359
- Docker上のpuppeteerがPage crashしてしまうときはshmサイズを疑う
- puppeteer - How to select an option from dropdown select