🤖
Raspberry PiでPuppeteerを動かす
やりたいこと
「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にあげておいた
Discussion