🤖

Raspberry PiでPuppeteerを動かす

2022/11/30に公開

やりたいこと

「Raspberry Pi でPuppeteerは動くの?」という疑問があったので試してみた。

結論、Puppeteer-coreとChromiumで無事に動いた。

環境

マシンは家にあったRaspberry Pi 3モデル

Raspberry PiのOSはデスクトップモードを選択しており、chromiumがプリインストールされた状態

$ lsb_release -a
No LSB modules are available.
Distributor ID:	Raspbian
Description:	Raspbian GNU/Linux 11 (bullseye)
Release:	11
Codename:	bullseye

コード

package.json

package.jsonにはpuppeteer-coreを追加しておく

json
{
...
  "dependencies": {
    "puppeteer-core": "^19.3.0"
  }
}

JSコード

処理の流れを説明すると、、、
example.comにアクセスし、h1タグの文字を取得してログ出力している。

ラズパイで動作させる注意点として、
executablePath: "chromium-browser"がないとRaspberry Piでプリインストール済みのChromiumが起動しない。

const puppeteer = require("puppeteer-core");

const LAUNCH_OPTION = {
  headless: true,
//   channel: "chrome", // Macで動かすときはこちらを使う
    executablePath: "chromium-browser", // Raspberry Piはこちらを使う
  args: ["--no-sandbox", "--disable-setuid-sandbox"],
};

(async () => {
  const browser = await puppeteer.launch(LAUNCH_OPTION);
  try {
    const page = await browser.newPage();
    await page.goto("https://example.com");
    const text = await page.$eval(
      "body > div > h1",
      (item) => item.textContent
    );
    console.log(text);
  } catch (e) {
    console.error(e);
  } finally {
    await browser.close();
  }
})();

あとはRaspberry Piで
node index.jsを実行したらスクレイピングが動くはず

コードはGitHubにあげておいた

https://github.com/ikemura23/puppeteer-core_raspberry-pi_sample

Discussion