26
19

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

puppeteerでjsやcss、画像の読み込みをさせず高速化する方法

Last updated at Posted at 2018-09-19

概要

自分がやりたくて結構調べたのですがあまり日本語の記事がなかったのでメモ程度に残しておきます。
やりたいことにもよりますが、静的なページのテキストを取得するだけ、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']
  });

参考記事

Don't load images, CSS and JS #1913

26
19
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
26
19

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?