selenium+PhantomJS的替代方案

2018-06-22 18:22:56 Python 阅读 (6184) 评论(0)

前言:

        新版本的selenium使用phantomJS提示报错信息Selenium support for PhantomJS has been deprecated, please use headless versions of Chrome or Firefox instead,这是为什么呢?


一.    Selenium + PhantomJS 是什么?

        senelium是一种自动化测试工具。它支持各种浏览器,包括 Chrome,Safari,Firefox 等主流浏览器,如果你在这些浏览器里面安装一个 Selenium 的插件,那么便可以方便地实现Web界面的测试。换句话说叫 Selenium 支持这些浏览器驱动。PhantomJS也是一种浏览器,不过它是无界面的,可以看成一种是只在内存中运行的浏览器。正因为此,Python+selenium+PhantomJS可以实现一些页面元素比较复杂的爬虫。


二.    为什么报错了?

        在旧版本的selenium可以很欢快使用phantomJS进行爬虫开发,不过新版的selenium和phantom“分手”了,不能继续在selenium里继续使用phantom了。所以就有了这样的报错信息“Selenium support for PhantomJS has been deprecated, please use headless versions of Chrome or Firefox instead”,大概意思是说selenium中不再继续支持phantom的使用,推荐使用chrome或Firefox的无头模式(版本)作为替代。


三.    问题来了,什么是headless(无头)?

        听着怪吓人的。了解下,Chrome或Firefox的headless模式——浏览器的无界面形态,与phantomJS有点类似。不过Chrome或Firefox的headless模式更具优势,毕竟Chrome和Firefox天生就是浏览器,其headless也更能模拟真实用户操作浏览器的行为,也比真实浏览器运行更为快速,而phantomJS本身是js实现的,其只是通过js去“模拟”实现浏览器的各种功能。可以说,Chrome或Firefox的headless模式就是对标PhantomJS的。

更多phantomJS和headless的差别,请看这里


四.    我们该怎么办呢?

        既然phantomJs不能用了,但是我们的爬虫还得继续写啊!那就换用headless呗!

        关于Chrome或Firefox的headless模式体现在代码里,就是需要增加一些相关的配置代码.

        这里以Chrome为例:

from selenium import webdriver
from selenium.webdriver.chrome.options import Options


options_info = Options()
options_info.add_argument('--headless')
options_info.add_argument('--disable-gpu')
driver = webdriver.Chrome(chrome_options=options_info)
# 之后就和之前的操作一样了
driver.get('https://sysheng.cn') 
...
...
...
driver.quit()

        Firefox浏览器的配置和Chrome的配置一样,不过就是实例化浏览器时是

driver= webdiver.Firefox(firefox_options=options_info)


五. 后话

        这个世界一直在变化,我们也要跟上脚步才行啊,不然就GG了。


评论