LoginSignup
1
0

More than 5 years have passed since last update.

Puppeteerのなにがし

Last updated at Posted at 2019-04-19

高速化したい時にするなにか

HTMLが取得できればいい時

setRequestInterceptionでリクエストをどうするか制御する。
request.abortで処理を中断、 request.continueで処理を継続させるという制御ができる。
HTMLだけあればいいというときは以下でいう最初のリクエストだけあればいい。

なのでそれだけを取得してやればOK

let page = await browser.newPage();
await page.setRequestInterception(true);
page.on('request', interceptedRequest => {
  if (url === interceptedRequest.url()) {
        interceptedRequest.continue();
    } else {
        interceptedRequest.abort();
    }
});

launchの時にする何か

色々引数を付与してやるといいらしい

puppeteer.launch({
  headless: true,
  args: [
    '--no-first-run',
    '--no-sandbox',
    '--no-zygote',
    '--single-process'
  ]
})

もはやPuppeteerは関係ない何か

並列で処理するだけ

(async () => {
  const browser = await puppeteer.launch({
    headless: true,
    args: []
  });
  const verifyExistParts (browser, url) => {
    ...
    return true or false
  }

  await Promise.all(urls.map(url => verifyExistParts(browser, url))).then((results) => {
    const failures = results.filter(e => e === false).length;
    const msg = `${results.length} examples, ${failures} failures`;
    let status;

    if (results.every(result => result)) {
      status = 'Succeeded.';
    } else {
      status = 'Failed.';
    }
    console.log(`${status} ${msg}`);
  });
  browser.close();
})();

launchするときのいろいろ

options

項目 説明 備考 |
headless Chromeをクローム(ブラウザUI)なしに実行する。デフォルトでtrue 参考URL
ignoreHTTPSErrors エラーを無視できる。デフォルトはfalse
slowMo ms単位で遅延実行してくれる
args ブラウザインスタンスに渡す追加の引数
timeout ブラウザインスタンスの起動を待機する最大時間(ms)。デフォルトは30000ms0で無効にできる

args

ちょっと多すぎて挫折

項目 説明 備考 |
--disable-gpu GPU hardware accelerationを無効化する
--disable-dev-shm-usage コンテナで実行するときはメモリの関係上付与した方がいいらしい 参考URL
--no-sandbox 通常sandbox※化されているすべてのプロセスタイプに対してsandboxを無効にする sandbox:外部から受け取ったプログラムを保護された領域で動作させて、システムが不正に操作されるのを防ぐセキュリティ・システム
1
0
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
1
0