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()

原文地址:https://www.cnblogs.com/liugp/p/10424872.html

时间: 2024-10-08 01:01:28

Selenium+PhantomJS使用时报错原因及解决方案的相关文章

Selenium+PhantomJS使用时报错原因

运行下面代码:'''PhantomJS运用''' from selenium import webdriverimport time # 通过keys模拟键盘from selenium.webdriver.common.keys import Keys # 操作哪个浏览器对哪个浏览器建一个实例# 自动按照环境变量查找相应的浏览器driver = webdriver.PhantomJS() # 如果浏览器没有在相应环境变量中,需要指定浏览器位置driver.get("http://www.baid

chrome调试时js出现start.js报错原因及解决方案

现象: start.js是什么呢,它是qq安全软件装到chrome里的插件,用来对用户网络操作进行安全保护. 在这个js的第54行出现了代码错误:pwds并不是真正的数组,所以这里的var i in pwds的i值并不只是0~n,由此至错. 解决方案: 1.关掉qq安全助手这个插件. 2.告知js作者修改(:)貌似没有留联系邮箱).

Python2在Sublime Text3中print中文时报错原因及解决办法

1,出现的问题及分析 在Sublime Text3中用ctrl+B运行python程序时,如果要打印输出英文时正常运行,而输出中文时则会报错,具体情况如下: Traceback (most recent call last): File "D:\PythonWorkplace\test_print_unicode.py", line 3, in <module> print u'程序' UnicodeEncodeError: 'ascii' codec can't enco

python中用selenium调Firefox报错问题

python在用selenium调Firefox时报错: Traceback (most recent call last):  File "G:\python_work\chapter11\test_selenium_firefox.py", line 10, in <module>    driver = webdriver.Firefox()  File "C:\Python34\lib\site-packages\selenium\webdriver\fi

OVF3为订单原因分配成本中心时报错“成本中心未定义”,消息号:VT806

问题:OVF3为订单原因分配成本中心时报错"成本中心未定义",消息号:VT806.KS03检查成本中心数据是已经建立的. 原因:OVF3往右边拉动,还有一个需要填入的字段"有效起始日",此字段值必须在成本中心定义的有效期范围内,若超出范围,则会报上面的错误. 解决方案:看完原因分析就知道啦,哈 原文地址:https://www.cnblogs.com/bobbymei/p/9415135.html

linux中进入mysql时报错Access denied for user &#39;root&#39;@&#39;localhost&#39; (using password: YES)解决方案

之前在linux中装完mysql后直接在命令行窗口输入mysql就会进入数据库了,但是今天输入mysql命令后直接报错,如下图: 之后输入:mysql -uroot -p 提示输入密码:***** 还是报同样的错误,在网上查说是因为root用户没有设置mysql密码导致的,然后根据网上给出的方案进行调试解决,步骤如下: 1.先停掉mysql服务,然后以安全模式后台方式启动,此时光标会一直闪动,表理它! 2.然后新打开一个会话窗口,直接在命令行输入:mysql,会直接进入到数据库命令行 3.然后就

Sass for循环中编译%时报错解决方案

sass功能强大,特别是支持for循环,节省大量开发时间,但是在开发时遇到一个问题,直接使用%时没有问题,当有变量时再加% 单位在编译时报错: 这样没有问题: @for $width from 0 to 10{ .wp#{$width}{ width:$width px; } } 但是这样就有问题了: @for $width from 0 to 10{ .wp#{$width}{ width:$width%; } } 或者这样: @for $width from 0 to 10{ .wp#{$w

【selenium+Python unittest】之发送邮箱时报错:smtplib.SMTPDataError、smtplib.SMTPAuthenticationError(例:126邮箱)

原代码如下: import smtplib from email.mime.text import MIMEText from email.header import Header #要发送的服务器 smtpserver = 'smtp.126.com' #要发送的邮箱用户名/密码 user = 'XXX@126.com' password = 'XXX' #发送的邮箱 sender = 'XXX@126.com' #接收的邮箱 receiver = 'XXX@qq.com' #发送邮箱主题 s

Python报错:TypeError: __init__() got an unexpected keyword argument &#39;io_loop&#39; 原因及解决方案

今天打开一个Python文件时,报错提示: TypeError: __init__() got an unexpected keyword argument 'io_loop' 明明是从旧电脑上拷贝到新电脑上的文件,之前运行是OK的,新电脑上运行怎么就报错了呢? 错误原因: 配置python环境时,默认tornado版本是最新的版本(恰好我新电脑重新配置了python环境,所以安装了最新版本),但是在4.0版本之后就废弃了io_loop参数. 解决方案: 1. 先卸载当前安装的tornado p