5
0

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 1 year has passed since last update.

AWS LambdaでChrome Headlessなブラウザでクロールさせる方法

Last updated at Posted at 2023-02-16

はじめに

JSで描画されるWebページが増え定期的にチェックする場合にクロールするのが厄介になりました。
LambdaでChromeのHedadlessブラウザでアクセスさせたいときに簡単な方法があったのでメモ

  1. chrome-aws-lambdaのarnの取得
    検索するともろもろzipで固めてアップロードみたいな形が多いのですが公式にLambda Layerのarnが公開されています。
    https://github.com/shelfio/chrome-aws-lambda-layer
    こちらからリージョンにあわせたものをコピーしてください
    参考:東京リージョン(ap-northeast-1)
    arn:aws:lambda:ap-northeast-1:764866452798:layer:chrome-aws-lambda:31

  2. Lambda Layerを登録
    Lambda上で通常通りに関数を作成します。
    その後にコードの下にあるLayersをクリックします。
    image.png
    そして先ほどコピーしたarnをARNを指定にチェックをいれて入力します。
    image.png

  3. コードを書きます

const chromium = require("@sparticuz/chrome-aws-lambda");

exports.handler = async(event, context) => {

    const browser = await chromium.puppeteer.launch({
        args: chromium.args,
        defaultViewport: chromium.defaultViewport,
        executablePath: await chromium.executablePath,
        headless: chromium.headless,
    });

    let page = await browser.newPage();

    await page.goto('https://www.yahoo.co.jp/');
    const pageTitle = await page.title();

    await page.waitForSelector('#tabpanelTopics1');
    const innerText = await page.evaluate(() => (document.querySelector('#tabpanelTopics1')).innerText);

    await browser.close();
    return pageTitle+"\n\n"+innerText;
};

5
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
5
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?