Scaling Phantom / CasperJS刮刮?

时间:2013-12-13 19:38:15

标签: javascript scalability phantomjs casperjs

我有一个Ruby应用程序,它使用CasperJS来废弃网站,返回结果并对数据进行一些操作。

现在,我的CasperJS脚本消耗大约200Mb,这意味着如果我想并行启动5个实例,那么算一算:)。我正在考虑将其部署到Heroku,但我相信我会为工作人员达到内存限制。

我可以做些什么来减少内存使用量或使其可扩展?我希望能够并行解析超过10页。我应该看看另一个替代方案(我真的需要成为一个无头浏览器,因为我想看看页面中所有元素的位置,而不仅仅是抓取HTML)?

2 个答案:

答案 0 :(得分:1)

我遇到了同样的情况,尤其是像Pinterest这样的照片密集型网站。在那种情况下,我只能在一个会话中运行大约30分钟,然后PhantomJS会在内存使用1GB时崩溃。

Casper可以选择不下载图像,因此可以使用phantomJS保存内存。我假设由于页面缓存而正在构建内存。我很想听听别人对此事的看法。

我认为那里没有太多替代品。 PhantomJS的限制仍然比Selenium快。

答案 1 :(得分:0)

@Hommer Smith,

考虑前端的清漆,将图像放入缓存并释放CasperJS的工作。

设置CasperJS以在加载外部页面之前使用您的Varnish,因此您不需要太多内存。

只是提示我还没有测试解决方案。

问候!