是一个综合性项目:包含一系列的工具和库,支持 Web 浏览器的各种 自动化操作:
软件测试
爬虫领域
RPA 领域
特点:
在 Selenium 中包含三大组件,共同构成浏览器自动化操作的工具集
搭建环境,需要Python3.9以上
pip install selenium
pip install webdriver-helper
谷歌:
1.访问 : https://npm.taobao.org/mirrors/chromedriver/
火狐:
1. 访问 : https://npm.taobao.org/mirrors/geckodriver/
2. 选择版本
3. 选择操作系统
4. 选择 32 ore 64
5. 下载、解压
然后在cmd 执行chromedriver 来检测是否可以,以下就是表示安装完成
首先引入三个主要用到的包
from selenium import webdriver
from selenium.webdriver.common.by import By
import math
第一个为打开浏览器爬取数据的基础包
第二个为设置获取页面响应内容的类型,可以为path 或class等
第三个为 获取分页数据有小数点加1取整
使用程序打开浏览器并且访问页面内容
drivers = webdriver.Chrome();
drivers.get("https://www.baidu.com/")
接下来就可以进行获取页面的东西了 以下为获取页面内容的示例
1,获取页面中总条数并且进行分页
count = int(drivers.find_element(By.XPATH,'//*[@class="result__count"]').text); # 获取总数为
意思为获取到页面中class为 result_count的text数据并且转换成int类型
sum = math.ceil(count/100);
利用math.ceil 方法进行四入五入获取到每页100条数据总共多少页数据
然后进行循环操作
for q in range(0,sum):
print("正在循环第"+str(q)+"页");
#这里就写你想获取页面内容进行解析
表示在页面中插入jquery内容或javascript内容 这里我做的操作是删除页面中所有class为pb-dropzone的元素彻底删除掉
driver.execute_script('$(".pb-dropzone").remove()');
这里为获取到页面中需要循环div的class 进行获取循环的总数然后循环
goods_arr = driver.find_elements(By.XPATH,"//div[@class='issue-item clearfix']");
这里为获取到循环在循环里面获取到标题内容根据text获取到页面数据
title = driver.find_element(By.XPATH,'//*[@id="pb-page-content"]/div/main/div[1]/div/div[2]/div/ul/div['+str(j)+']/div[4]/span').text; # 标题
这里为获取到循环的a链接 根据attribute 属性获取到a链接的href值
url = driver.find_element(By.XPATH,'//*[@id="pb-page-content"]/div/main/div[1]/div/div[2]/div/ul/div['+str(j)+']/div[4]/span/h2/a').get_attribute("href"); # href
记得所有的内容都要加上异常处理 try except 示例为
try:
title = driver.find_element(By.XPATH,'//*[@id="pb-page-content"]/div/main/div[1]/div/div[2]/div/ul/div['+str(j)+']/div[4]/span').text; # 标题
except:
title = "";
然后可以进行print打印
print("标题:[%s]"%(title))
最终关掉浏览器
driver.quit()
selenium 有三大组件,其中最核心的是WebDriver
WebDriver 通过面向对象的方式,为技术人员提供结构
WebDriver 通过Restful API 的方式 调用 浏览器驱动,完成浏览器控制
整个过程,已经成为w3c标准,这个标准称为WebDriver 协议
selenium 两大对象:
对浏览器的操作: WebDriver对象
对元素的操作: WebElement对象
Selenium4 已经发布,具体新的语法和特性
本次课程使用 selenium 4.1.0
没有明确说明的部分,也可能是selenium4的特性,从而在selenium3中报错
selenium 4 的主要特性
webdriver 的启动参数
元素定位api
相对定位
双向API (bidi_api) 草稿阶段