PuppeteerCrawler和任务的建立中的差异

时间:2019-10-08 08:53:39

标签: apify

我已将爬虫迁移到具有legacy-phantomjs-crawler(任务版本)的Task,并且出于效率和更好设计的原因,使用PuppeterCrawler(Act-Version)将其重新开发为纯Act。比较这两个版本,结果发现任务版本的速度大约是Act版本的两倍。我怀疑这与设置差异有关,尤其是根据导航超时。但是我不确定。

为什么刮板作为“任务”比“作为”更快,并且逻辑大致相同? 使用PuppeterCrawler的Act和使用legacy-phantomjs-crawler的Task之间的设置差异是什么? 如何使用PuppeterCrawler设置Act,以便获得与使用legacy-phantomjs-crawler的Task相同的性能?

欢呼沃尔夫冈

1 个答案:

答案 0 :(得分:0)

产生这种差异的原因是这两种解决方案中使用的基础技术。

legacy-phantomjs-crawler使用PhantomJS作为渲染引擎。 PhantomJS的速度非常快,但是令人遗憾的是,开发人员不再支持它,并且许多网站在检测到PhantomJS时都禁止访问。另外,它不支持现代javascript(es6 and later),因此某些现代网站无法加载。

PuppeteerCrawler使用通过javascript控制的chrome / chromium浏览器作为渲染引擎。这比PhantomJS慢,因为正在进行的进程更多,但是现代网站和阻止PhantomJS的网站通常都能在其中很好地工作。

还有一个选项,那就是CheerioCrawler,它比PhantomJS还要快,因为它甚至不呈现网站和处理javascript,它仅适用于所加载页面的HTML。如果您要访问的网站没有使用javascript加载数据并且没有针对正常网络请求的保护,这通常是最佳选择。

遗憾的是,在我们的SDK中,我们不再提供对PhantomJS的支持,主要是因为我们遇到越来越多的页面将其阻​​止或无法加载的问题。您可以通过阻止不需要的资源并在导航期间等待正确的事件来加快操纵up的爬虫的速度。例如,Here是一项功能,可以帮助您阻止不需要从页面加载的内容。