在学习使用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://version/"
来查看chrome版本继续测试,结果失败。
难道驱动有问题?那么有网页到淘宝地址下载相同的驱动,解决问题了。那么我也尝试一番。 https://npm.taobao.org/mirrors/chromedriver
寻找对应版本的浏览器驱动。
继续测试,结果失败。
不是驱动的问题,难道是谷歌浏览器问题。让我重新下载79版本的浏览器实属有些不甘心,因此有网友提出,关闭谷歌浏览器自动更新,防止浏览器版本与驱动版本不一致的情况。
但我这个情况应该不是自动更新问题。(若你很早之前用过浏览器驱动器,现在又重新启用,此时会因为浏览器自动更新,而驱动器没有更新,此时会导致二者版本不一致)
既然这是一种方法,就尝试下。
一种方法:打开终端,输入命令 defaults write com.google.Keystone.Agent checkInterval 0 ,重启chrome。
另一种方法:
首先关闭Chrome浏览器,然后进入目录"/Library/Google/GoogleSoftwareUpdate"。然后删除该目录下的GoogleSoftwareUpdate.bundle即可。
可以通过命令行删除,终端cd /Library/Google/GoogleSoftwareUpdate;或者Finder手动删除都可以。
首先是「右键计算机->管理」,在「计算机管理(本地)->系统工具->任务计划程序->任务计划程序库」中找到两个和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/
[4]
下载地址1: http://dl.google.com/release2/chrome/XASj0J0BUKotBRR0eLPLxw_79.0.3945.88/79.0.3945.88_chrome_installer.exe
[5]
下载地址2: https://dl.google.com/release2/chrome/XASj0J0BUKotBRR0eLPLxw_79.0.3945.88/79.0.3945.88_chrome_installer.exe
[6]
下载地址3: http://www.google.com/dl/release2/chrome/XASj0J0BUKotBRR0eLPLxw_79.0.3945.88/79.0.3945.88_chrome_installer.exe
[7]
下载地址4: https://www.google.com/dl/release2/chrome/XASj0J0BUKotBRR0eLPLxw_79.0.3945.88/79.0.3945.88_chrome_installer.exe
[8]
下载地址5: http://redirector.gvt1.com/edgedl/release2/chrome/XASj0J0BUKotBRR0eLPLxw_79.0.3945.88/79.0.3945.88_chrome_installer.exe
[9]
下载地址6: https://redirector.gvt1.com/edgedl/release2/chrome/XASj0J0BUKotBRR0eLPLxw_79.0.3945.88/79.0.3945.88_chrome_installer.exe
[10]
下载地址1: http://dl.google.com/release2/chrome/dD8pzpZ_oWXWx1BWp_sabg_79.0.3945.88/79.0.3945.88_chrome_installer.exe
[11]
下载地址2: https://dl.google.com/release2/chrome/dD8pzpZ_oWXWx1BWp_sabg_79.0.3945.88/79.0.3945.88_chrome_installer.exe
[12]
下载地址3: http://www.google.com/dl/release2/chrome/dD8pzpZ_oWXWx1BWp_sabg_79.0.3945.88/79.0.3945.88_chrome_installer.exe
[13]
下载地址4: https://www.google.com/dl/release2/chrome/dD8pzpZ_oWXWx1BWp_sabg_79.0.3945.88/79.0.3945.88_chrome_installer.exe
[14]
下载地址5: http://redirector.gvt1.com/edgedl/release2/chrome/dD8pzpZ_oWXWx1BWp_sabg_79.0.3945.88/79.0.3945.88_chrome_installer.exe
[15]
下载地址6: https://redirector.gvt1.com/edgedl/release2/chrome/dD8pzpZ_oWXWx1BWp_sabg_79.0.3945.88/79.0.3945.88_chrome_installer.exe
[16]
下载地址1: http://dl.google.com/release2/chrome/AJCyFu62M0EoxCbiiLUEJew_79.0.3945.88/GoogleChrome-79.0.3945.88.dmg
[17]
下载地址2: https://dl.google.com/release2/chrome/AJCyFu62M0EoxCbiiLUEJew_79.0.3945.88/GoogleChrome-79.0.3945.88.dmg
[18]
下载地址3: http://www.google.com/dl/release2/chrome/AJCyFu62M0EoxCbiiLUEJew_79.0.3945.88/GoogleChrome-79.0.3945.88.dmg
[19]
下载地址4: https://www.google.com/dl/release2/chrome/AJCyFu62M0EoxCbiiLUEJew_79.0.3945.88/GoogleChrome-79.0.3945.88.dmg
[20]
下载地址5: http://redirector.gvt1.com/edgedl/release2/chrome/AJCyFu62M0EoxCbiiLUEJew_79.0.3945.88/GoogleChrome-79.0.3945.88.dmg
[21]
下载地址6: https://redirector.gvt1.com/edgedl/release2/chrome/AJCyFu62M0EoxCbiiLUEJew_79.0.3945.88/GoogleChrome-79.0.3945.88.dmg