概要
自分がやりたくて結構調べたのですがあまり日本語の記事がなかったのでメモ程度に残しておきます。
やりたいことにもよりますが、静的なページのテキストを取得するだけ、POST結果を取得したいだけの時などは必要のない読み込みをすると速度に影響が出てしまいます。必要のない読み込みは制御したほうがいいでしょう。
ページ読み込み時のファイル読み込み無効化
page = await browser.newPage();
await page.setRequestInterception(true);
page.on('request', (request) => {
if (['image', 'stylesheet', 'font', 'script'].indexOf(request.resourceType()) !== -1) {
request.abort();
} else {
request.continue();
}
});
- image:画像読み込み
- stylesheet:CSS読み込み
- font:フォント読み込み
- script:scriptタグの読み込み(JavaScript)
それぞれページ読み込み時に読み込まないようにします。
だいたいこれで早くなるはずです。
他に試したこと
JavaScriptの無効化のみ
使ってみた感じページ読み込み時のscriptタグ制御と変わらなそうです。
await page.setJavaScriptEnabled(false)
puppeteer.launchのargsにフラグを渡す方法
正直こっちは効果あるかわからないです。フラグの数が多すぎて把握しきれていません。
puppeteer.launchのargsに渡せるflag一覧
ここに書いてあるdisable関係をうまく使えば早くできそうです。
URL下のバーを表示させない
browser = await puppeteer.launch({
args: ['--disable-infobars']
});