无界面selenium

selenium中文文档:https://selenium-python-zh.readthedocs.io/en/latest/index.html

使用selenium,安装好对应版本的chromedriver和chrome,然后将driver放入项目,用 driver = webdriver.Chrome()启动。

selenium刷新:

1
2
3
driver.refresh()
# 或调用js
driver.execute_script("location.reload()")

请求头配置参考:https://blog.csdn.net/u013440574/article/details/81911954

仅添加普通请求头:

1
2
3
4
5
6
opt = webdriver.ChromeOptions()
opt.set_headless()
opt.add_argument(
'user-agent=Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.26 Safari/537.36 Core/1.63.6726.400 QQBrowser/10.2.2265.400')

driver = webdriver.Chrome(options=opt)

这里使用opt作为chromedriver的参数,添加user-agent信息,然后调用webdriver.Chrome,并传入opt。

注:这里使用的是无窗口界面的chrome selenium爬虫,所以可以设置,如果使用有界面的,则不必设置,因为带界面必定带请求头和各种信息。

Selenium不再推荐使用PhantomJS,会报如下警告

1
2
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 '

于是从PhantomJS转移到Chrome,使用headless versions of Chrome时,首先要安装Chrome,然后下载chromedriver,再把chromedriver的地址配置到系统环境变量path中,方便调用。如果不把chromedriver的地址配置到系统环境变量的话,也可以在使用时指定chromedriver的地址。

注意Chrome和chromedriver有版本对应的要求,系统中安装了某一版本的chrome要使用对应版本的chromedriver,其实下载最新版本的Chrome和chromedriver就行了,一般都是对应的。

Chrome下载地址:https://chrome.en.softonic.com/

chromedriver下载地址:http://npm.taobao.org/mirrors/chromedriver/

报错:[0917/002914.533:ERROR:gpu_process_transport_factory.cc(1007)] Lost UI shared context.

原因是在windows系统中Chrome无头模式下,其中的SwiftShader软件会触发断言失败,但实际上不影响程序执行,可以忽略该错误。

可以设置chromedriver的日志级别,只有大于设置级别的日志还会输出,该配置参数为:log-level:

1
2
3
4
5
6
opt.add_argument('log-level=3')
# INFO = 0,
# WARNING = 1,
# LOG_ERROR = 2,
# LOG_FATAL = 3
# default is 0

-------------本文结束 感谢您的阅读-------------