我正在使用 PhantomJS 和 CasperJS 进行屏幕抓取等。我面临的问题是它占用了过多的 CPU 使用率,这让我觉得它可能没有那么可扩展。有什么方法可以减少相同的 CPU 使用率。我能想到的一些是:
1) 禁用图片加载
2) 禁用js加载
另外我想知道 python 是否比 phantom 更轻(在 CPU 使用率方面)用于抓取目的。
为什么只有 CasperJS / PhantomJS?您是否正在抓取使用 JavaScript 加载内容的网站?任何不运行完整的 webkit 浏览器的工具都会比运行的更轻量级。
正如评论中提到的,您可以在 linux 系统上使用wget
或curl
将网页转储到文件/标准输出。有许多库可以处理和解析原始 HTML,例如 NodeJS的cheerio。
仍然需要某种形式的脚本?因为您提到了 python,所以有一个名为Mechanize的工具可以在不运行 webkit 的情况下执行此操作。它不如 Casper / Phantom 强大,但它允许您以更小的占用空间做很多相同的事情(填写表格、单击链接等)。
5 年半后,我认为您不再遇到此问题,但如果其他人偶然发现此问题,这就是解决方案。
完成抓取后,键入 退出浏览器browser.quit()
, browser 是您设置的变量的名称。