Puppeteer を Raspberry Pi (Raspbian) 上で使う場合
- puppeteerが自動でダウンロードする Chromium は Raspbian では使えない
- puppeteer の最新版は Raspbianにapt-getでインストールできる(あるいははじめから入っている)バージョンの Chromium に対応していない(場合がある)。
そのため puppeteer のバージョンを落とすか、 最新版 puppeteer に対応する Chromium をインストールするか という方法が考えられますが、後者の方法でうまくいく方法が見つけられませんでした。
この記事では puppeteer のバージョンを落とす方を試します。
Raspbian への Node.jsやChromiumのインストール はこの記事では紹介しません。
今回使用したバージョン
- Raspbian raspbian-2018-11-15
- Node.js v10.15.1
- Chromium 65.0.3325.181 (後述の方法で確認)
- Puppeteer 1.0.0 (後述の方法で決定)
Raspbian 上の Chromium のバージョンを確認
まず、Raspbian にインストールされている Chromium のバージョンを確認します。
$ /usr/bin/chromium-browser --version
Chromium 65.0.3325.181 Built on Raspbian , running on Raspbian 9.8
対応したpuppeteerのインストール
puppeteer のバージョンを落とすと言っても具体的にどのバージョンまで落とせばいいか・・・
実は公式ドキュメントに対応しているバージョンが書いてあります。
左上のバージョン部分をクリックすると puppeteer の各バージョンがどのバージョンのChromium に対応しているかの表が見られます。
今回の例の場合、Chromiumのメジャーバージョンは65だったので puppeteer は v1.0.0 を使えばいいことがわかります。
npm でインストール時にバージョンを指定してやります。
その際、puppeteer が自動でChromiumをダウンロードしますが、先述通りこれはRaspbianでは使えません。
使わないだけなのでダウンロードされても別に構わないのですがその分無駄な容量を食ってしまうため
Chromiumのダウンロードを無効にする 環境変数PUPPETEER_SKIP_CHROMIUM_DOWNLOAD
を設定してpuppeteerをインストールすることをおすすめします。
※もし、対応している puppeteer のバージョンが v1.7.0 以上だったら puppeteer-coreを使ったほうがいいです。puppeteer-core は Chromium をダウンロードしません。
PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=true npm install puppeteer@1.0.0
package.jsonやpackage-lock.jsonからインストールする場合
PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=true npm install
Raspbian上で使えるか確認
index.js
const puppeteer = require('puppeteer');
(async () => {
const browser = await puppeteer.launch({
executablePath: '/usr/bin/chromium-browser',
headless: true,
});
const page = await browser.newPage();
await page.goto('https://www.google.com');
await page.screenshot({ path: 'google.png' });
await browser.close();
})();
$ node index.js
撮れたスクリーンショット
参考URL
Puppeteer
Raspberry Piでpuppeteerを動かす方法
PuppeteerをRaspberry Piで使う - チカラの技術
RaspberryPiでpuppeteerを動かす方法 - 新しいことにはウェルカム