2018年通过Selenium能够抓取微博、微信数据及其他网站数据,用的是GeckoDriver驱动firefox进行抓取,在使用的过程中经常遇到内存使用过多的问题,排查的过程让我非常痛苦。
在几年以前我也同时使用chrome跟firefox作为自己日常工作中的浏览器,那时候firefox就经常因为内存问题崩溃,所以firefox给我的印象不是太好。
通过Selenium框架爬虫我为什么使用firefox呢? 因为网上firefox的例子特别多,就这么一个简单的理由。
后来的各种问题,还是下决心使用chrome浏览器进行数据抓取。主要操作便是将GeckoDriver改为chromedriver,因为不同的浏览器需要不同的驱动。因为大部分网页在firefox跟chrome页面元素是相同的,所有在爬虫进行页面元素提取时,不需要做改动,至少在我没有做改动,这个根据情况而定。
chromedriver在使用过程中需要加一个参数--whitelisted-ips,这个参数是为了解决chrome的权限问题。
ChromeOptions options = new ChromeOptions();
options.addArguments("--whitelisted-ips");
WebDriver driver = new ChromeDriver(options);
如果不加入会有一个报错信息,印象中通过右击查看chrome.exe属性,取消必须Administrator账号启动也可以解决这个问题。
使用chrome浏览器感觉比firefox浏览器占用内存明显减少,chromedriver也更容易控制,也许chromedriver更稳定一下吧。