Chaya爬虫学习 —— Selenium之安装Chrome驱动

最近在学习爬虫课堂中开始学习Selenium自动化工具。按照老师的话来说就是模拟人来操控浏览器。由于我经常使用的浏览器Chrome容易自动更新,如果下载固定的浏览器驱动器有点跟不上时代的感觉,因此我决定使用通过python加载ChromeDriver,这样就能保证自己下载的包紧跟Chrome更新的潮流了。

运行环境:Win10专业版-21H1

刚开始本来打算跟着官网运行的,但是发现走到一半,就报错了。为了解决官网没有说清楚的细节,这篇文章就此诞生了。Selenium官网如下 ↓

Install browser drivers | Seleniumhttps://www.selenium.dev/documentation/webdriver/getting_started/install_drivers/

一、跟着官网操作

Chaya爬虫学习 —— Selenium之安装Chrome驱动_第1张图片

这是我跟着官网操作的大致步骤,其中数字代表着如何找到我对应操作的官网步骤,蓝色框也解释了我为什么使用这个方法 —— “大多数机器会自动更新浏览器,但驱动程序不会。为确保您获得正确的浏览器驱动程序,有许多第三方库可以为您提供帮助。”

导入包的时候记得 ↓

pip install webdriver_manager

 因为是第三方的库,不加载下载会报错说你没有这个包

下载往后按照官网走的时候你会发现一个问题

 它会报错:NameError: name 'Service' is not defined

奇了怪了,我明明是按照官网走的,为什么说我没有被定义,这个不是包里面原本就有的吗?

二、解决'Service'没有被定义的问题

在网上找了很久,终于发现这个Service是selenium中webdriver里面的chorme包中service包里面的一个函数,重新导入包后

Chaya爬虫学习 —— Selenium之安装Chrome驱动_第2张图片

 名字定义的问题解决了,但是新的问题又出现了: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

下载过程: 

Chaya爬虫学习 —— Selenium之安装Chrome驱动_第3张图片

 注意:

  • 如果输入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())

你可能感兴趣的:(爬虫实践课程,爬虫,学习,selenium)