在学习使用
selenium模块
爬取动态渲染信息时,
selenium模块
需要通过浏览器驱动来控制浏览器的操作。
我们安装教程安装浏览器(一般使用谷歌浏览器
Chrome
),下载浏览器驱动(谷歌浏览器驱动
ChromeDriver
)
Google Chrome浏览器驱动下载地址[1]
IE浏览器驱动下载地址[2]
Firefox浏览器驱动下载地址[3]
这里需要根据已经安装的
Google Chrome浏览器
的版本,以及自己的电脑的系统安装浏览器驱动。
一顿操作猛如虎,开始使用百度网站做实验。结果懵逼了。。。
import time
from selenium import webdriver
browser=webdriver.Chrome()#会打开浏览器
browser.get('https://www.baidu.com/')
input=browser.find_element_by_id('kw')#找百度的输入框
print(input)
input.send_keys('python')
input=browser.find_element_by_id('su').click()#回车
time.sleep(10)
browser.close()#关闭浏览器
结果发现报错信息:SessionNotCreatedException: Message: session not created: This version of ChromeDriver only supports Chrome version 79
尝试一
既然浏览器与驱动不一致,那就解决驱动问题。
点击Chrome->关于Google Chorme->Google Chrome 已是最新版本,版本 87.0.4280.88(正式版本) (x86_64)
还可以打开chrome 输入
"chrome://version/"
来查看chrome版本进入谷歌浏览器驱动官网,找到对应版本的浏览器驱动,进行下载
继续测试,结果失败。
尝试二
难道驱动有问题?那么有网页到淘宝地址下载相同的驱动,解决问题了。那么我也尝试一番。
https://npm.taobao.org/mirrors/chromedriver
寻找对应版本的浏览器驱动。
继续测试,结果失败。
尝试三
不是驱动的问题,难道是谷歌浏览器问题。让我重新下载79版本的浏览器实属有些不甘心,因此有网友提出,关闭谷歌浏览器自动更新,防止浏览器版本与驱动版本不一致的情况。
但我这个情况应该不是自动更新问题。(若你很早之前用过浏览器驱动器,现在又重新启用,此时会因为浏览器自动更新,而驱动器没有更新,此时会导致二者版本不一致)
既然这是一种方法,就尝试下。
Mac
一种方法:打开终端,输入命令 defaults write com.google.Keystone.Agent checkInterval 0 ,重启chrome。
另一种方法:
首先关闭Chrome浏览器,然后进入目录"/Library/Google/GoogleSoftwareUpdate"。然后删除该目录下的GoogleSoftwareUpdate.bundle即可。
可以通过命令行删除,终端cd /Library/Google/GoogleSoftwareUpdate;或者Finder手动删除都可以。
Windows 10
首先是「右键计算机->管理」,在「计算机管理(本地)->系统工具->任务计划程序->任务计划程序库」中找到两个和Google自动更新相关的任务计划「GoogleUpdateTaskMachineCore」与「GoogleUpdateTaskMachineUA」,并把它俩禁用掉。(选中,右下「所选项->禁用」)
然后在下方的「服务和应用程序->服务」中,找到两个和Google更新相关的服务「Google更新服务(gupdate)」、「Google更新服务(gupdatem)」,并右键,选择属性,把启动类型改为禁用。
果然不出所料,此方法不能解决问题。
尝试四
使用浏览器驱动管理器模块自动识别并下载驱动。
# 安装webdriver-manager模块
pip install webdriver-manager
from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager
driver = webdriver.Chrome(ChromeDriverManager().install())
下载完成后会自动弹出浏览器。
还是没有得到解决,不是每个人都跟我的情况一样,如果以上都得到解决,就不需要继续尝试了。若你跟我的情况一样,就就继续尝试。
尝试五
没办法,只能卸载最新版本的的谷歌浏览器,重新下载安装旧版本浏览器及对应的驱动。这也许selenium模块不能驱动高版本的浏览器及浏览器驱动。虽然我也尝试过将selenium模块升级。
既然他报错79版本,那么我们就下载79版。
附79版本下载地址
Google Chrome v79.0.3945.88 无更新功能版 64位下载地址1[4]
下载地址2[5]
下载地址3[6]
下载地址4[7]
下载地址5[8]
下载地址6[9]Google Chrome v79.0.3945.88 无更新功能版 32位
下载地址1[10]
下载地址2[11]
下载地址3[12]
下载地址4[13]
下载地址5[14]
下载地址6[15]Google Chrome v79.0.3945.88 Mac版
下载地址1[16]
下载地址2[17]
下载地址3[18]
下载地址4[19]
下载地址5[20]
下载地址6[21]
再次尝试运行下段代码:
import time
from selenium import webdriver
browser=webdriver.Chrome()#会打开浏览器
browser.get('https://www.baidu.com/')
input=browser.find_element_by_id('kw')#找百度的输入框
print(input)
input.send_keys('python')
input=browser.find_element_by_id('su').click()#回车
time.sleep(10)
browser.close()#关闭浏览器
结果过程演示:
终于解决问题。虽然走了这么多弯路,但最终还是解决问题了,以上的思路及结果问题方法仅供参考。若你有更好的解决方案,可以联系笔者。
下载地址
[1]
下载浏览器驱动: https://chromedriver.chromium.org/downloads
[2]
IE浏览器驱动下载地址: http://selenium-release.storage.googleapis.com/index.html
[3]
Firefox浏览器驱动下载地址: https://github.com/mozilla/geckodriver/releases/
-- 数据STUDIO --
版权归原作者 数据STUDIO 所有, 如有侵权,请联系我们删除。