如何在多平台(win、mac、linux)上安装webdriver并使用selenium
一、我们需要先安装 chrome 浏览器:
windows 和 mac 系统正常安装,Ubuntu 系统请按以下步骤操作:
-
更新你的软件包列表:
这是确保你的软件包列表是最新的,这样当你尝试安装软件包时,APT 能够找到它们。终端中运行:
sudo apt update && sudo apt upgrade -y
-
手动安装依赖:
安装以下依赖包:
sudo apt install fonts-liberation libu2f-udev libvulkan1 xdg-utils
如果其中的某个包无法安装,你可能需要查找替代的包或添加其他的软件源。
-
再次尝试安装 Chrome:
wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb sudo apt install ./google-chrome-stable_current_amd64.deb
二、安装 chromedriver
1.手动安装
Selenium 需要 WebDriver 驱动程序来控制浏览器。你需要下载与你的浏览器版本相匹配的 WebDriver。例如,如果你使用 Chrome,你需要下载对应你 chrome 版本的 ChromeDriver。
ChromeDriver 下载地址:https://sites.google.com/chromium.org/driver/downloads?authuser=0
2.自动安装
1)方法一:selenium 各版本通用的方法:使用webdriver_manager。
pip install webdriver-manager
# selenium 3
from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager
driver = webdriver.Chrome(ChromeDriverManager().install())
# selenium 4
from selenium import webdriver
from selenium.webdriver.chrome.service import Service as ChromeService
from webdriver_manager.chrome import ChromeDriverManager
driver = webdriver.Chrome(service=ChromeService(ChromeDriverManager().install()))
测试:
# 导航到百度主页
driver.get("https://www.baidu.com")
# 打印标题信息
print(driver.title)
# 关闭浏览器
driver.quit()
更多说明见仓库主页的说明文件。
2)方法二:高版本 selenium 内置了 Selenium Manager
如果你使用的是较新的 Selenium 版本(例如 v4.12.0),则不必担心手动下载 chromedriver,因为 Selenium 的新内置工具 [Selenium Manager 会自动为你下载并管理驱动程序](https://stackoverflow.com/questions/77111127/how-can-we-download-chromedriver-117#:~:text=Suggesstion%3A Having said the above%2C,can be as simple as),所以不用手动下载 webdriver 了,运行代码测试:
from selenium import webdriver
# 创建一个新的 Chrome 会话
driver = webdriver.Chrome()
# 导航到百度主页
driver.get("https://www.baidu.com")
# 打印标题信息
print(driver.title)
# 关闭浏览器
driver.quit()
三、Codespace 介绍
Codespace是一个代码空间是托管在云中的开发环境。,创建的每个 codespace 都由 GitHub 托管在虚拟机上运行的 Docker 容器中,Github 用户每月都有免费额度可以使用,可以点击GitHub Codespaces 快速入门。如果我们能在 codespace 中运行 selenium 岂不是每月可以薅羊毛,而且自带科学上网功能,我们又可以不用翻墙直连 codespace。
Codespace 中如何使用 selenium 呢?
直接在 python 程序中运行 selenium 相关代码是失败的,会报错AttributeError: ‘NoneType’ object has no attribute ‘split’。原因是默认没有安装 chrome 浏览器,那当然无法运行基于 chrome 的 chromedriver。
codespace 本身是 amd64 架构的 ubuntu 系统,使用 selenium 需要使用下列方法安装 chrome 浏览器:
这是确保你的软件包列表是最新的,这样当你尝试安装软件包时,APT 能够找到它们。终端中运行:
- 更新你的软件包列表
sudo apt update && sudo apt upgrade -y
- 手动安装依赖:
安装以下依赖包:
sudo apt install fonts-liberation libu2f-udev libvulkan1 xdg-utils
如果其中的某个包无法安装,你可能需要查找替代的包或添加其他的软件源。
- 安装 Chrome:
wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
sudo apt install ./google-chrome-stable_current_amd64.deb
在树莓派等 arm64 架构的 Ubuntu 系统中使用 selenium:
有很多人有自己的服务器,但是是 arm 架构的,比如树莓派:
当然也可以跑 python 程序,运行 selenium,但是流程稍有区别:
-
需要安装 chromium 和 chromium-browser,依次运行下列命令:
sudo apt update && sudo apt upgrade -y sudo apt install fonts-liberation libu2f-udev libvulkan1 xdg-utils -y sudo apt-get install chromium-chromedriver sudo apt-get install chromium-browser
-
初始化浏览器有区别:
1)因为我们已经下载了 chromium 和 chromium-chromedriver,我们先验证他们的位置和版本:
- 使用
whereis <app>
命令可以找到 chromium-chromedriver 和 chromium 的位置:
- 使用
whereis chromium
whereis chromedriver
分别输出/snap/bin/chromium
,/usr/bin/chromedriver
。
使用<app> --version
确定其版本:
chromium --version
chromedriver --version
分别输出::Chromium 118.0.5993.70 snap
,ChromeDriver 118.0.5993.70
- 在 python 代码中指定浏览器驱动的执行地址:
from selenium.webdriver.chrome.service import Service
service = Service("/usr/bin/chromedriver") # seleiunm4版本使用Service指定浏览器地址
driver = webdriver.Chrome(service=service, options=options)
如果你还有其他问题,可以在我的博客评论或者微信私信我。