Selenium 安装
在开始使用 Selenium 之前,我们需要先安装它。以下是安装 Selenium 的详细步骤。
Selenium 支持多种编程语言,但本系列教程将以 Python 为例进行讲解。
如果你还没有安装 Python,可以按照以下步骤进行安装:
- 访问 Python 官方网站。
- 下载适合你操作系统的 Python 安装包。
- 运行安装包,并确保在安装过程中勾选"Add Python to PATH"选项。
- 安装完成后,打开命令行(Windows 上是命令提示符或 PowerShell,macOS 和 Linux 上是终端),输入
python --version
或python3 --version
,检查 Python 是否安装成功。
Python 的内容也可以参考:Python 教程
安装好 Python 后,我们可以使用 pip
来安装 Selenium。pip
是 Python 的包管理工具,用于安装和管理 Python 库。
打开命令行,输入以下命令来安装 Selenium:
pip install selenium
如果你使用的是 Python3,可能需要使用 pip3
:
pip3 install selenium
安装完成后,可以通过以下命令检查 Selenium 是否安装成功:
pip show selenium
如果显示了 Selenium 的版本信息,说明安装成功。
下载浏览器驱动
Selenium 需要通过浏览器驱动来控制浏览器。不同的浏览器需要不同的驱动。以下是常见浏览器的驱动下载地址:
- Chrome: ChromeDriver
- Firefox: GeckoDriver
- Edge: EdgeDriver
下载适合你浏览器版本的驱动,并将其路径添加到系统的环境变量中,或者将驱动文件放在 Python 脚本所在的目录下。
使用 Selenium
安装好 Selenium 和浏览器驱动后,我们就可以开始编写自动化脚本了。
以下是一个简单的示例,展示如何使用 Selenium 打开一个网页并获取页面标题。
1、导入 Selenium
首先,我们需要在 Python 脚本中导入 Selenium 的 webdriver
模块:
from selenium import webdriver
2、启动浏览器
接下来,我们需要启动一个浏览器实例,本系列会以 Chrome 为例。
driver = webdriver.Chrome(executable_path='path/to/chromedriver')
选择浏览器并初始化 WebDriver:
实例
# 使用 Chrome 浏览器
driver = webdriver.Chrome(executable_path='/path/to/chromedriver')
# 或者使用 Firefox 浏览器
# driver = webdriver.Firefox(executable_path='/path/to/geckodriver')
# 或者使用 Edge 浏览器
# driver = webdriver.Edge(executable_path='/path/to/msedgedriver')
从 Selenium 4 开始,在浏览器驱动的管理方式上发生了变化:Selenium 4 尝试自动检测系统中安装的浏览器版本,并下载相应的驱动程序,这意味着用户不再需要手动下载和设置驱动程序路径,除非他们需要特定版本的驱动程序。
实例
driver = webdriver.Chrome() # 如果使用其他浏览器,如 Firefox,需要相应修改
当国内的网络环境,自动检测下载驱动需要不一样的网络环境,所以建议手动下载驱动,然后指定驱动路径。
在 Selenium 4 中,不再直接在 webdriver.Chrome 中设置驱动程序路径,而是通过引入 Service 对象来设置。这样可以避免弃用警告,并确保驱动程序的正确加载。例如:
实例
from selenium.webdriver.chrome.service import Service as ChromeService
service = ChromeService(executable_path="PATH_TO_DRIVER")
options = webdriver.ChromeOptions()
driver = webdriver.Chrome(service=service, options=options)
如果你将 chromedriver
放在了系统路径中,或者将其放在了 Python 脚本所在的目录下,可以省略 executable_path
参数:
driver = webdriver.Chrome()
3、打开网页
使用 get
方法打开一个网页:
driver.get('https://www.baidu.com')
4、获取页面标题
我们可以使用 title
属性来获取当前页面的标题:
print(driver.title)
5、关闭浏览器
完成操作后,记得关闭浏览器:
driver.quit()
6、完整示例
将以上步骤组合起来,完整的代码如下:
实例
from selenium.webdriver.chrome.service import Service as ChromeService
# 设置正确的驱动路径
service = ChromeService(executable_path="/RUNOOB/Downloads/chromedriver-mac-arm64/chromedriver")
options = webdriver.ChromeOptions()
driver = webdriver.Chrome(service=service, options=options)
# 打开一个网站
driver.get("https://www.baidu.com")
# 获取页面标题
print(driver.title)
# 关闭浏览器
driver.quit()
以上代码执行成功后,会打开浏览器,并打开网页,如下所示:
打开完成后,会输出网页标题:
百度一下,你就知道
使用 window.stop() 强制停止页面加载
有时候一个网页加载太慢,会导致异常出现,为了能够顺利抓取数据,可以让页面加载几秒后再通过执行 JavaScript 代码 window.stop(),强制停止页面加载。
实例
from selenium.webdriver.chrome.service import Service as ChromeService
# 设置正确的驱动路径
service = ChromeService(executable_path="/RUNOOB/Downloads/chromedriver-mac-arm64/chromedriver")
options = webdriver.ChromeOptions()
driver = webdriver.Chrome(service=service, options=options)
# 打开一个网站
driver.get("https://www.baidu.com")
# 等待页面加载完成
time.sleep(2) # 可以根据需要调整等待时间
# 强制停止页面加载
driver.execute_script("window.stop();")
# 获取页面标题
print(driver.title)
# 关闭浏览器
driver.quit()
常见操作
除了打开网页和获取标题,Selenium 还支持许多其他操作。以下是一些常见的操作示例:
1、查找元素
可以使用 find_element
方法来查找页面上的元素。例如,查找一个输入框并输入文本:
实例
input_element.send_keys('Selenium')
2、点击按钮
可以使用 click
方法来点击按钮:
实例
button_element.click()
3、等待页面加载
有时页面元素不会立即加载完成,我们可以使用 WebDriverWait
来等待元素出现:
实例
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
wait = WebDriverWait(driver, 10)
element = wait.until(EC.presence_of_element_located((By.NAME, 'q')))