最近在学习爬虫课堂中开始学习Selenium自动化工具。按照老师的话来说就是模拟人来 *** 控浏览器。由于我经常使用的浏览器Chrome容易自动更新,如果下载固定的浏览器驱动器有点跟不上时代的感觉,因此我决定使用通过python加载ChromeDriver,这样就能保证自己下载的包紧跟Chrome更新的潮流了。
运行环境:Win10专业版-21H1
刚开始本来打算跟着官网运行的,但是发现走到一半,就报错了。为了解决官网没有说清楚的细节,这篇文章就此诞生了。Selenium官网如下 ↓
Install browser drivers | Seleniumhttps://www.selenium.dev/documentation/webdriver/getting_started/install_drivers/
一、跟着官网 *** 作这是我跟着官网 *** 作的大致步骤,其中数字代表着如何找到我对应 *** 作的官网步骤,蓝色框也解释了我为什么使用这个方法 —— “大多数机器会自动更新浏览器,但驱动程序不会。为确保您获得正确的浏览器驱动程序,有许多第三方库可以为您提供帮助。”
导入包的时候记得 ↓
pip install webdriver_manager
因为是第三方的库,不加载下载会报错说你没有这个包
下载往后按照官网走的时候你会发现一个问题
它会报错:NameError: name 'Service' is not defined
奇了怪了,我明明是按照官网走的,为什么说我没有被定义,这个不是包里面原本就有的吗?
二、解决'Service'没有被定义的问题在网上找了很久,终于发现这个Service是selenium中webdriver里面的chorme包中service包里面的一个函数,重新导入包后
名字定义的问题解决了,但是新的问题又出现了:ValueError: check_hostname requires server_hostname
好叭╮(╯-╰)╭,一个问题解决了又有新的问题出现了。
三、解决版本问题查看了很多资料,大部分都是说我之前下载request包的时候,顺带下载的urllib3版本过高导致报错,最后在 stack overflowhttps://stackoverflow.com/questions/66642705/why-requests-raise-this-exception-check-hostname-requires-server-hostname 确定了我的修改方案
这里我使用的命令是:
pip install urllib3==1.26
下载过程:
注意:
- 如果输入pip install的时候出现关于user的报错,请用管理员权限打开
- 上面显示我所下载的selenium最小匹配的urllib3是1.26版本,所以我从网址提供的版本从1.25转移到了1.26
完整代码如下:
# 导包之前请先下载好对应的包
from webdriver_manager.chrome import ChromeDriverManager
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
# 出现 host 问题的报错,请下载目前所下载的 selenium 所适配的 urllib3 的最低版本即可
service = Service(executable_path=ChromeDriverManager().install())
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)