【问题标题】:Memory issue on using Apify Puppeteer crawling使用 Apify Puppeteer 爬行的内存问题
【发布时间】:2020-04-18 02:30:11
【问题描述】:

我一直在做一个 Python 项目,用户向程序提供一长串 URL(比如说 100 个 URL),程序将生成 100 个进程来执行包含爬虫代码的 JavaScript 代码(使用 @ 987654321@)。此外,JavaScript 代码是基于 Apify Puppeteer 单页模板创建和修改的。

但是,100个进程同时调用爬取代码会占用大量内存,导致卡顿。由于 Python 代码正在等待从 JavaScript 代码写入的文件中读取结果,因此内存不足会极大地影响性能并引发文件写入错误。我想知道有什么方法可以优化 JavaScript 爬虫代码,或者是否可以在双方都进行任何改进?

一些修改 --- 关于程序的额外信息:用户正在给出一个 URL(域)列表,并且程序想要递归地爬取域中的所有链接(例如,爬取域 github.com 中的所有超链接)。

【问题讨论】:

    标签: javascript python web-crawler puppeteer apify


    【解决方案1】:

    完全没有必要启动 100 个单独的爬取进程。 Apify 提供了爬虫类,它们可以抓取一个列表或一个充满 URL 的队列。它们还管理并发,因此运行保持在 CPU 和内存限制内。我们通常会抓取数百万个 URL,而不会出现显着的内存或 CPU 问题。我会使用PuppeteerCrawler

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-18
    • 2019-12-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多