由于微信公众号不能同步修改,点击底部阅读原文可以获取本文的最新版本。
目录
- 一、我们需要先安装chrome浏览器
- 二、安装chromedriver
- 1.手动安装
- 2.自动安装
- 三、Codespace介绍
- codespace中使用selenium
- 在树莓派等arm64架构的Ubuntu系统中使用selenium
一、我们需要先安装chrome浏览器
windows和mac系统正常安装,Ubuntu系统请按以下步骤操作:
更新你的软件包列表:
这是确保你的软件包列表是最新的,这样当你尝试安装软件包时,APT 能够找到它们。终端中运行:
代码语言:javascript复制sudo apt update && sudo apt upgrade -y
手动安装依赖:
安装以下依赖包:
代码语言:javascript复制sudo apt install fonts-liberation libu2f-udev libvulkan1 xdg-utils
如果其中的某个包无法安装,你可能需要查找替代的包或添加其他的软件源。
再次尝试安装 Chrome:
代码语言:javascript复制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[1]。
代码语言:javascript复制pip install webdriver-manager
代码语言:javascript复制# selenium 3
from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager
driver = webdriver.Chrome(ChromeDriverManager().install())
代码语言:javascript复制# 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()))
测试:
代码语言:javascript复制# 导航到百度主页
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: Having said the above,,can be as simple as "Selenium Manager 会自动为你下载并管理驱动程序"),所以不用手动下载webdriver了,运行代码测试:
代码语言:javascript复制from selenium import webdriver
# 创建一个新的 Chrome 会话
driver = webdriver.Chrome()
# 导航到百度主页
driver.get("https://www.baidu.com")
# 打印标题信息
print(driver.title)
# 关闭浏览器
driver.quit()
三、Codespace介绍
Codespace[2]是一个代码空间是托管在云中的开发环境。,创建的每个 codespace 都由 GitHub 托管在虚拟机上运行的 Docker 容器中,Github用户每月都有免费额度可以使用,可以点击GitHub Codespaces 快速入门[3]。如果我们能在codespace中运行selenium岂不是每月可薅羊毛,而且自带访问国外网站功能,我们又可以不用访问国外网站直连codespace。
Codespace界面
codespace中如何使用selenium呢?
直接在python程序中运行selenium相关代码是失败的,会报错**AttributeError: 'NoneType' object has no attribute 'split'**。原因是默认没有安装chrome浏览器,那当然无法运行基于chrome的chromedriver。
codespace本身是amd64架构的ubuntu系统,使用selenium需要使用下列方法安装chrome浏览器:
这是确保你的软件包列表是最新的,这样当你尝试安装软件包时,APT 能够找到它们。终端中运行:
1.更新你的软件包列表
sudo apt update && sudo apt upgrade -y
2. 手动安装依赖
代码语言:javascript复制# 安装以下依赖包:
sudo apt install fonts-liberation libu2f-udev libvulkan1 xdg-utils
如果其中的某个包无法安装,你可能需要查找替代的包或添加其他的软件源。
3.安装 Chrome:
代码语言:javascript复制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架构的,比如树莓派:
树莓派5
当然也可以跑python程序,运行selenium,但是流程稍有区别:
需要安装chromium和chromium-browser,依次运行下列命令:
代码语言:javascript复制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代码中指定浏览器驱动的执行地址:
代码语言:javascript复制from selenium.webdriver.chrome.service import Service
service = Service("/usr/bin/chromedriver") # seleiunm4版本使用Service指定浏览器地址
driver = webdriver.Chrome(service=service, options=options)
参考资料[1]
webdriver_manager: https://github.com/SergeyPirogov/webdriver_manager
[2]
Codespace: https://docs.github.com/en/codespaces
[3]
GitHub Codespaces 快速入门: https://docs.github.com/zh/codespaces/getting-started/quickstart
[4]
我的博客: https://cdn.renhai-lab.tech/
[5]
我的GITHUB: https://github.com/renhai-lab
[6]
我的GITEE: https://gitee.com/renhai-lab
[7]
我的知乎: https://www.zhihu.com/people/Ing_ideas