我有一个Ruby应用程序,它使用CasperJS来废弃网站,返回结果并对数据进行一些操作。
现在,我的CasperJS脚本消耗大约200Mb,这意味着如果我想并行启动5个实例,那么算一算:)。我正在考虑将其部署到Heroku,但我相信我会为工作人员达到内存限制。
我可以做些什么来减少内存使用量或使其可扩展?我希望能够并行解析超过10页。我应该看看另一个替代方案(我真的需要成为一个无头浏览器,因为我想看看页面中所有元素的位置,而不仅仅是抓取HTML)?
答案 0 :(得分:1)
我遇到了同样的情况,尤其是像Pinterest这样的照片密集型网站。在那种情况下,我只能在一个会话中运行大约30分钟,然后PhantomJS会在内存使用1GB时崩溃。
Casper可以选择不下载图像,因此可以使用phantomJS保存内存。我假设由于页面缓存而正在构建内存。我很想听听别人对此事的看法。
我认为那里没有太多替代品。 PhantomJS的限制仍然比Selenium快。
答案 1 :(得分:0)
@Hommer Smith,
考虑前端的清漆,将图像放入缓存并释放CasperJS的工作。
设置CasperJS以在加载外部页面之前使用您的Varnish,因此您不需要太多内存。
只是提示我还没有测试解决方案。
问候!