如何在多平台(win/mac/linux)上安装webdriver并使用selenium

2023-11-24 17:11:47 浏览数 (4)

由于微信公众号不能同步修改,点击底部阅读原文可以获取本文的最新版本。

目录

  • 一、我们需要先安装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 snapChromeDriver 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

0 人点赞