【问题标题】:Ways to reduce CPU usage while using PhantomJS/CasperJS使用 PhantomJS/CasperJS 时减少 CPU 使用率的方法
【发布时间】:2019-01-08 12:36:45
【问题描述】:

我正在使用 PhantomJS 和 CasperJS 进行屏幕抓取等。我面临的问题是它占用了过多的 CPU 使用率,这让我觉得它可能没有那么可扩展。有什么方法可以减少相同的 CPU 使用率。我能想到的有:

1) 禁用图片加载
2) 禁用js加载

我还想知道 python 是否比 phantom 更轻(在 CPU 使用率方面)用于抓取目的。

【问题讨论】:

  • 如果您不需要加载图像,您在抓取什么?然后使用 curl 或 wget
  • 我只需要使用 casper/Phantom... 我正在寻找方法来减少其中的 cpu 使用率

标签: phantomjs cpu-usage casperjs


【解决方案1】:

为什么只有 CasperJS / PhantomJS?您是否正在抓取使用 JavaScript 加载内容的网站?任何不运行完整的 webkit 浏览器的工具都会比运行的更轻量级。

如 cmets 中所述,您可以在 linux 系统上使用 wgetcurl 将网页转储到文件/标准输出。有许多库可以处理和解析原始 HTML,例如 NodeJS 的 cheerio

仍然需要某种形式的脚本?因为您提到了 python,所以有一个名为 Mechanize 的工具可以在不运行 webkit 的情况下执行此操作。它不如 Casper / Phantom 强大,但它允许您以更小的占用空间做很多相同的事情(填写表单、单击链接等)。

【讨论】:

  • +1 来自我,我不知道为什么这应该被否决。是的,这无助于降低 Phantom 的 CPU 使用率(我真的很想这样做,因为我需要加载 JS)但它仍然是一个很好的答案,OP 不应该在不需要它时使用 phantom。这就像问如何用锤子在墙上钻一个洞,并否决建议使用钻头的人。
【解决方案2】:

5 年半后,我认为您不再遇到此问题,但如果其他人偶然发现此问题,这就是解决方案。

抓取完成后,输入browser.quit()退出浏览器,browser是你设置的变量名。

【讨论】:

  • 这是避免大内存泄漏的好方法(每隔一段时间重新启动浏览器),但它无助于减少任何 CPU 使用率。
猜你喜欢
  • 1970-01-01
  • 2013-06-01
  • 2015-08-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多