Selenium+PhantomJS使用时报错原因及解决方案

Posted 技术栈

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Selenium+PhantomJS使用时报错原因及解决方案相关的知识,希望对你有一定的参考价值。

问题
今天在使用selenium+PhantomJS动态抓取网页时,出现如下报错信息:

UserWarning: Selenium support for PhantomJS has been deprecated, please use headless versions of Chrome or Firefox instead
warnings.warn(Selenium support for PhantomJS has been deprecated, please use headless 

翻译过来就是:

selenium已经放弃PhantomJS,了,建议使用火狐或者谷歌无界面浏览器。

  

解决方案
selenium版本降级
通过pip show selenium显示,默认安装版本为3.8.1。
将其卸载pip uninstall selenium,重新安装并指定版本号pip install selenium==2.48.0。
再次运行,发现没有报错,搞定!

使用无界面浏览器
Selenium+Headless Firefox
Selenium+Headless Firefox和Selenium+Firefox,区别就是实例option的时候设置-headless参数。

前提条件:
- 本地安装Firefox浏览器
- 本地需要geckodriver驱动器文件,如果不配置环境变量的话,需要手动指定executable_path参数。

示例代码:

from selenium.webdriver import Firefox
from selenium.webdriver.firefox.options import Options


def main():
options = Options()
options.add_argument(-headless)
driver = Firefox(executable_path=./geckodriver, firefox_options=options)
driver.get("https://www.qiushibaike.com/8hr/page/1/")
print(driver.page_source)
driver.close()


if __name__ == __main__:
main()
Selenium+Headless Chrome

与Firefox类似,双手奉上。

前提条件:
- 本地安装Chrome浏览器
- 本地需要chromedriver驱动器文件,如果不配置环境变量的话,需要手动指定executable_path参数。

示例:

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


def main():
chrome_options = Options()
chrome_options.add_argument(--headless)
chrome_options.add_argument(--disable-gpu)
driver = webdriver.Chrome(executable_path=./chromedriver, chrome_options=chrome_options)
driver.get("https://www.baidu.com")
print(driver.page_source)
driver.close()


if __name__ == __main__:
main()

 












以上是关于Selenium+PhantomJS使用时报错原因及解决方案的主要内容,如果未能解决你的问题,请参考以下文章

使用chromedriver时报错

Ubuntu 下selenium + Chrome 的安装使用

selenium在使用sendkeys()时报错

python安装selenium时报错CERTIFICATE_VERIFY_FAILED

selenium + python之BSTestRunner生成测试报告时报错:NameError: name 'unicode' is not defined

selenium + python之BSTestRunner生成测试报告时报错:NameError: name 'unicode' is not defined