Puppeteer
Puppeteer is an API for controlling Chronium over the Chrome devTools Ptorocol. #Node.js
https://nitayneeman.com/posts/debugging-nodejs-application-in-chrome-devtools-using-ndb/より #ndb
GoogleChrome/puppeteer: Headless Chrome Node API
Puppeteer debug
リアル調査案件で使ったPuppeteer - Qiita
Puppeteerの使い方
タグの発火で使った例なので、Google Tag Managerのケースに当てはまる
tips:
puppeteer-core
puppeteer vs puppeteer-core GoogleChrome/puppeteer
You will then need to call puppeteer.connect( options) or puppeteer.launch( options ) with an explicit executablePath option.
executablePath option? chrome の?
chroniumのdownloadサイズを小さくする?
networkidle??
waitUntil: LoadEventで、
load vs network-idle · Issue #1666 · GoogleChrome/puppeteer
通信が終わったように見えるタイミングのパターン。
不要なリクエストを防ぐ
puppeteerを使ったスクレイピング - Qiita
page.on('request', request => { if(cond) request.abort(); });
不要なリクエスト送信を防ぐ方法ががある。例えば、以下のコードではexample.comドメイン以外のリソースと、拡張子がpngのファイルへのリクエストを抑制できる。
Google Cloud Functionsへのapplication:
FirebaseのCloud FunctionsでPuppeteerを使おうとしたら無課金お断りだった件orz - Qiita
すると140MB程度のChroniumがDLされる(;・∀・)
既にサーバーにはChromeがセットアップ済みのはずなのでChroniumはいらない。
cloud functionsで、package.jsonに書いてしまえば、あるということ?
Puppeteer on Google Cloud Functions
試していないが、サポートされているとはいえCloud Functionsの環境はChrome/Chromiumまでインストール済の親切設計ではないと思う、たぶん。
root権限で動かすらしく--no-sandboxが必須なところがポイントかもしれない。
Cloud Buildの話もある。
このDLどうにかスキップできないかと思って公式を見たら丁寧に解説があった。
https://github.com/GoogleChrome/puppeteer/blob/master/docs/api.md#puppeteer-vs-puppeteer-core
alixaxel/chrome-aws-lambda: Chromium Binary for AWS Lambda
apache-2.0
Navigation Timeout Exceeded:
MEMO: PuppeteerでSPA(Single Page Application)を操作する時の留意点 - Qiita
[ {waitUntil: 'networkidle'}をいれたが
{waitUntil: 'networkidle2'}にしろと言われ、でもだめ。