puppeteerで普段使っているChromeを自動操縦する。
puppeteerを使うときは、別途インストールされたchromiumを操作する場合が多いのですが、ログインしてのスクレイピングなどを行うときは普段使っているchromeを操作したい場合があるのでそのやり方のメモです。
※Chromeの実行ファイルの位置(パス)や、ユーザーデータディレクトリのパスは環境によって変わるのでパスを確認してコードを修正してください。
ローカルにインストールされているchromeを使う
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
const puppeteer = require('puppeteer-core'); (async () => { const browserSet = { headless: false, executablePath: 'C:\\Program Files\\Google\\Chrome\\Application\\Chrome.exe', } const browser = await puppeteer.launch(browserSet); const page = await browser.newPage(); await page.goto("https://www.google.com/", { waitUntil: 'load', }); })(); |
executablePathオプションでローカルにインストールされているChromeの実行ファイルを指定することができます。
ただし、この状態ではゲストモードで起動するためユーザーデータは使用できません。
そこで、userDataDirオプションを用いてユーザーデータの保存先を指定する必要があります。
ユーザーデータを設定する
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
const puppeteer = require('puppeteer-core'); (async () => { const browserSet = { headless: false, executablePath: 'C:\\Program Files\\Google\\Chrome\\Application\\Chrome.exe', userDataDir: 'C:\\Users\\<<User Name>>\\AppData\\Local\\Google\\Chrome\\User Data', } const browser = await puppeteer.launch(browserSet); const page = await browser.newPage(); await page.goto("https://www.google.com/", { waitUntil: 'load', }); })(); |
これでユーザーデータを読み込んだ状態のchromeを操作することができます。
ただし、この状態で実行するにはchromeが他に起動していないことが条件で、すでにchromeが起動していると「Error: Failed to launch the browser process!」エラーが発生するので注意が必要です。