Selenium(Web Browser Automation)的初衷是Web应用自动化测试。Selenium还广泛应用于爬虫,爬虫需要让浏览器自动运行网址来获取我们需要的内容
Selenium不是单个软件,它是由一系列的工具组成
Selenium库支持多种编程语言:Python、Java等,支持多种浏览器:Chrome、Firefox、Edge等,支持跨平台:Windows、MacOS、Linux
Selenium的动作操作可以使用Selenium调用WebDriver执行与用户交互相关的动作,例如单击、右键单击、悬停、拖放等。通过模拟用户在网页上的行为,可以实现更真实的测试和自动化操作
动作操作在爬虫领域具有重要的作用和意义。虽然传统的爬虫主要关注数据的抓取和解析,但随着网站的逐渐发展和演变,越来越多的网页采用了动态加载、异步加载或基于JavaScript的交互式元素
在这种情况下,传统的静态页面爬取方法可能无法获取到完整的数据或准确的页面状态。而动作操作则可以模拟人类用户与网页的交互行为,使爬虫能够处理这些动态页面并正确获取所需的数据
Selenium优势在于:
Selenium的动作操作在爬虫中的应用可以提高数据的完整性和准确性,使爬虫能够更好地应对动态页面和交互式元素的挑战,从而实现更全面、高效的数据采集任务
Selenium中文文档:https://www.selenium.dev/zh-cn/documentation/webdriver/getting_started/
1)下载浏览器驱动(WebDriver)
WebDriver主要用于驱动浏览器运行
Chrome浏览器的WebDriver(chromedriver.exe)下载安装配置:
查看Chrome浏览器版本
设置 -> 关于Chrome -> 版本
下载对应版本对应操作系统的驱动(前3位版本号一致即可)
淘宝镜像(114及之前版本):http://npm.taobao.org/mirrors/chromedriver/
官方镜像(指定版本下载):https://edgedl.me.gvt1.com/edgedl/chrome/chrome-for-testing/117.0.5938.62/win64/chromedriver-win64.zip
安装目录
解压即可。将解压的chromedriver.exe复制放在Chrome浏览器安装目录下的Application目录中或Python解释器的安装目录下(与python.exe同级)
配置系统环境变量Path
添加chromedriver.exe绝对路径,如果放在Python相关目录下该步骤可省略
# Application目录(右键图标打开文件所在位置)
C:\Users\cc\AppData\Local\Google\Chrome\Application
# Python解释器所在目录(或Scripts下)
E:\Program Files\Python\Python310
E:\Program Files\Python\Python310\Scripts
chromedriver.exe
2)安装:
pip install selenium
使用到的模块:
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver import ActionChains, Keys # 动作类
from selenium.webdriver.support.wait import WebDriverWait # 等待类
from selenium.webdriver.support import expected_conditions as EC # 等待条件类
from selenium.webdriver.support.select import Select # Select类
import time
3.1、页面等待加载
# 强制等待10s
time.sleep(10)
# 显式等待(Explicit Wait):等待特定条件达成
# 最长等待时间10s,EC.presence_of_element_located()是一个预定义的条件,用于等待元素出现在页面中
element = WebDriverWait(driver, 10).until(
EC.presence_of_element_located((By.XPATH, 'expr'))
)
# 隐式等待(Implicit Wait):等待一定时间段
# 最长等待时间10s,如果元素未找到将继续等待直到最长时间
driver.implicitly_wait(10)