与 Puppeteer 集成

调用 SDK

与 Puppeteer 集成请参考 与 Node.js 爬虫集成,只需要调用 crawlab.saveItem 方法。

避免内存泄漏

由于 Puppeteer 是利用 Chromium 来运行爬虫,因此在爬虫关闭的时候很可能会造成浏览器未关闭的情况。为了解决这个问题,我们需要用 dumb-init 这个工具来运行爬虫。在创建 Puppeteer 爬虫时,请在 执行命令 里输入以下内容。

dumb-init -- <command>

<command> 为实际执行命令,例如 node spider.js。因此,总的 执行命令 为如下内容。

dumb-init -- node spider.js

对于 Docker 用户,因为内置了 dumb-init,可以直接使用该工具。对于直接部署用户,需要自行下载。

启动 Puppeteer 的正确方式

Puppeteer 是依赖 Chromium 来作为引擎的,因此需要知道 Chromium 的正确执行路径,我们推荐使用 puppeteer-chromium-resolver 来启动 Puppeteer。如果您是预装 Node.js 或者在界面上安装 Node.js 的话,puppeteer-chromium-resolver 是内置的。

以下是启动 Puppeteer 的例子。

...
    const pcr = await PCR({
        folderName: '.chromium-browser-snapshots',
        hosts: ["https://storage.googleapis.com", "https://npm.taobao.org/mirrors"],
        retry: 3
    });

    const browser = await pcr.puppeteer.launch({
        headless: true,
        args: ['--no-sandbox'],
        executablePath: pcr.executablePath
    }).catch(function (error) {
        console.log(error);
    });

    const page = await browser.newPage();
...

具体例子请参考 Github 上 京东口罩商品抓取爬虫

© 2020 Crawlab, Made by Crawlab-Team all right reserved,powered by Gitbook该文件最后修改时间: 2020-10-05 06:00:14

results matching ""

    No results matching ""

    results matching ""

      No results matching ""