Python基于Selenium和chromedriver浏览器模拟行为抓取操作

0.谷歌浏览器版本为2023年05月26最新版

Python基于Selenium和chromedriver浏览器模拟行为抓取操作_第1张图片

1. 认识Selenium

是一个综合性项目:包含一系列的工具和库,支持 Web 浏览器的各种 自动化操作:
软件测试
爬虫领域
RPA 领域
特点:

  1. 开源: https://github.com/SeleniumHQ
  2. 兼容性: Chrome 、 FireFox 、 Edeg 、 IE 、 Opera 、 Safari
  3. 支持多种编程语言: Java 、 Python 、 C# 、 Ruby 、 JavaScript
  4. 执行并行测试: Grid 组件可以实现在多个机器上并行执行用例,极大的提高测试效率
    简单来说:selenium 成熟、知名、强大,是新手学习首选

2. Selenium 三大组件

在 Selenium 中包含三大组件,共同构成浏览器自动化操作的工具集

  1. Selenium IDE (录制、调试测试用例)
  2. Selenium WebDriver (执行用例)
  3. Selenium Grid (远程、并行执行用例)
    其中, WebDriver 是最重要组件

3.安装selenium 库

搭建环境,需要Python3.9以上
pip install selenium
pip install webdriver-helper

4.下载浏览器驱动在我发的包里面的驱动里面就是我下载好的驱动包

Python基于Selenium和chromedriver浏览器模拟行为抓取操作_第2张图片

直接放到python程序的安装目录即可
Python基于Selenium和chromedriver浏览器模拟行为抓取操作_第3张图片

5.在线下载

谷歌:

1.访问 : https://npm.taobao.org/mirrors/chromedriver/
Python基于Selenium和chromedriver浏览器模拟行为抓取操作_第4张图片

  1. 选择版本
  2. 选择操作系统
  3. 下载、解压

火狐:
1. 访问 : https://npm.taobao.org/mirrors/geckodriver/
2. 选择版本
3. 选择操作系统
4. 选择 32 ore 64
5. 下载、解压
然后在cmd 执行chromedriver 来检测是否可以,以下就是表示安装完成
Python基于Selenium和chromedriver浏览器模拟行为抓取操作_第5张图片

6.编写python程序

首先引入三个主要用到的包

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()

7.总结

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) 草稿阶段

你可能感兴趣的:(python,selenium,开发语言)