selenium 与浏览器 以及浏览器驱动版本问题

一、事情的起因
之前因专项需要,需要实现爬虫。技术实现采用Selenium,本身是作为一个Web应用程序测试的工具,但是也广泛的被用于爬虫。Selenium的核心Selenium Core基于JsUnit,完全由JavaScript编写,因此可运行于任何支持JavaScript的浏览器上。显然,Selenium非常适合解决上述我们提到的动态网页加载问题。 这里我们主要讲一下Selenium如何在java平台上使用、以及一些使用过程中出现的坑。

    二、要说再见的PhantomJS

这里需要解释下,使用Selenium需要准备和注意的东西。首先是Selenium的版本,在最新的版本里已经不再支持PhantomJS。这里需要解释下PhantomJS。

PhantomJS是一个无界面的,可脚本编程的WebKit浏览器引擎。它原生支持多种web 标准:DOM 操作,CSS选择器,JSON,Canvas 以及SVGPhantomJS是一个无界面的,可脚本编程的WebKit浏览器引擎。它原生支持多种web 标准:DOM 操作,CSS选择器,JSON,Canvas 以及SVG。

画个重点,PhantomJS可以理解成一个轻量的浏览器,这里有一个无界面(无头)的概念。因为在爬虫中,可能会展开多个标签页,如果要在界面显示,对于机器资源的占用是致命的,所以就需要一个只在程序中打开,但不需要界面显示的浏览器。(最开始的功能测试的时候,还是可以显示界面的,来判断爬虫的代码是否正确)

    三、版本不兼容的坑
但是现在的情况是是Selenium,已经不再支持PhantomJS。主要的原因是,Chrome、Firefox等大厂已经出了驱动可以支持无界面(无头)的操作。PhantomJS作为一个小厂的产品,自然就被弃用。目前还只是警告,但后续的版本应该会直接不支持。
UserWarning: Selenium support for PhantomJS has been deprecated, please use headless versions of Chrome or Firefox instead
于是到了本文的主题,selenium + 浏览器(火狐、Chrome) + 浏览器驱动,三者的版本兼容和匹配现在是一个大坑。


问题描述:
WebDriverException: Message: Service /usr/bin/geckodriver unexpectedly exite.Status code was: 1
上面这个问题,在selenium Firefox官网都没找到对应的解释,资料比较少。
四、Chrome与Firefox
4.1 Chrome
对于主流的浏览器,Chrome有一个版本的对应表

chromedriver版本 支持的Chrome版本
v2.36 v64-66
v2.35 v62-64
v2.34 v61-63
v2.33 v60-62
v2.32 v59-61
v2.31 v58-60
v2.30 v58-60
v2.29 v56-58
v2.28 v55-57
v2.27 v54-56
v2.26 v53-55
v2.25 v53-55
v2.24 v52-54
v2.23 v51-53
v2.22 v49-52
v2.21 v46-50
v2.20 v43-48
v2.19 v43-47
v2.18 v43-46
v2.17 v42-43
v2.13 v42-45
v2.15 v40-43
v2.14 v39-42
v2.13 v38-41
v2.12 v36-40
v2.11 v36-40
v2.10 v33-36
v2.9 v31-34
v2.8 v30-33
v2.7 v30-33
v2.6 v29-32
v2.5 v29-32
v2.4 v29-32
下载chromedriver地址:http://chromedriver.storage.googleapis.com/index.html
目前来看,最新的selenium版本+最新的Chrome+最新的驱动组合是没有问题的。

4.2 Firefox
第二部分是Firefox,这也是上面报错的时,使用的浏览器。firefox与geckodriver对应表,好像没有很明确对应关系,并且一旦不兼容就会报上述的错误,很头疼。Firefox中心提供的是延长支持版(简称“Firefox ESR版”),是专为那些无法或不愿每隔六周就升级一次的企业打造。Firefox ESR 版的升级周期为 42 周,而普通 Firefox 的升级周期为 6 周。
建议还是用回普通版,减少版本兼容上的麻烦。

下载geckodriver地址:https://github.com/mozilla/geckodriver/releases

既然无法有一个对应的表,这里提供一份可行的版本组合。

selenium-server-standlone-3.3.1.jar

geckodriver.exe V.15.0

firefox 48.0.2 /52.0.2

你可能感兴趣的:(前端)