有关Selenium做爬虫方式的资源消耗的问题

yanghan1167 发布于 2015/02/12 09:50
阅读 4K+
收藏 0

@黄亿华 你好,想跟你请教个问题:

我们采用了selenium的webdriver作为引擎,进行网页数据的抓取、以及后续的解析、数据持久化。webdriver采用chromedriver。

为了到达抓取的目标页面,需要有复杂的交互,因此,选webdriver,为开发过程提供了便捷。          

实际操作过程中, 一台8G内存的window机器,实际可同时打开的webdriver的数量并不多,大概100~200个, 而且,会出现chrome浏览器崩溃,windows内存耗尽等问题。导致,单机的并发处理能力并不乐观。

考虑到单独打开一个chrome页面,所消耗的cpu、内存较大,请问有没有什么好的建议,或者,你所采用的方式有没有其他好的解决方案?

加载中
0
小 文
小 文
我们用的是火车浏览器(locoyposter),内核是火狐,用单机或分布式的方式来运行。效果还行。
yanghan1167
yanghan1167
对内存资源的占用是什么情况?平均一个driver占用内存多少?
0
hysjw
hysjw
没有办法 必须用webdriver 否则会有一些问题 单纯的类库无法完美的模拟出AJAX加载的内容 你只能从减少webdriver的内存占用入手 分布式其实是一种比较好的方案
0
yanghan1167
yanghan1167

引用来自“hysjw”的评论

没有办法 必须用webdriver 否则会有一些问题 单纯的类库无法完美的模拟出AJAX加载的内容 你只能从减少webdriver的内存占用入手 分布式其实是一种比较好的方案
分布式是可以解决问题的。不过,单纯考堆砌机器,成本问题还是需要考虑哒! 还是需要致力于增大单机容量。减小内存占用是一个方向的。 目前我通过观察发现,平均一个chromedriver进程,启动的chrome内存占用大概200M左右的。 之前用的windows 8G内存平均也就只能并发运行几十个, 保持正常页面处理的话,系统容量只有十几个。用Linux 64G内存, 大概可以正常运行到300个左右。不过,还是打算测试下Webdriver支持的其他几个类型的driver的内存占用情况,确认是否有更好用的driver的。
0
河浪
如果不是一定要用selenuim,建议你使用httpclient,本质上都是get和post请教
0
H
Hope.Chen

楼主最后是怎么处理的哦?求指教

返回顶部
顶部