はじめに
const puppeteer = require('puppeteer');
ファイル内でpuppeteerを読み込む
ファイル読み込み
ファイル操作を行うライブラリ
const fs = require('fs');
node.jsはShift-jisをサポートしていないので、通常の方法で読み込むと、文字化けしてしまう。 iconv-liteは様々な文字コードを変換するモジュール。
const iconv = require('iconv-lite');
Puppeteerクラスを使う
Puppeteer module provides a method to launch a Chromium instance. The following is a typical example of using Puppeteer to drive automation:
puppeteer/api.md at master · GoogleChrome/puppeteer · GitHub より
const puppeteer = require('puppeteer'); puppeteer.launch().then(async browser => { const page = await browser.newPage(); await page.goto('https://www.google.com'); // other actions... await browser.close(); });
const browser = await puppeteer.launch();
JSの実行
JS実行は page.evaluate
を使用します。
https://github.com/GoogleChrome/puppeteer/blob/master/docs/api.md#pageevaluatepagefunction-args
例えば、submit要素をクリックする。
await page.evaluate(({}) => { $('input[type="submit"]').click(); },{});
CSVのダウンロード
await page.goto(DLURL); await page._client.send('Page.setDownloadBehavior', { behavior: 'allow', downloadPath: './store' }); await page.evaluate(({}) => { $('img[src="/master/common/btn_dl_01.png"]').click(); },{}); await page.waitFor(4000)
await page._client.send('Page.setDownloadBehavior', { behavior: 'allow', downloadPath: './store' });
がよくわからない・・・
Githubで会話されていた
Question: How do I get puppeteer to download a file? · Issue #299 · GoogleChrome/puppeteer · GitHub