使用 Selenium 实现自动化分页处理与信息提取

目录

  1. 项目背景与目标
  2. Selenium 环境配置
  3. 分页处理的基本思路
  4. 简化后的代码示例
  5. 总结

正文

1. 项目背景与目标

在进行 Web 自动化测试或数据抓取时,处理分页是一个常见的需求。通过 Selenium,我们可以自动化浏览多个分页并提取每页上的信息。本文将介绍如何使用 Selenium 实现这一目标,并提供简化和优化后的代码示例。

2. Selenium 环境配置

在开始之前,确保您已经安装了 Selenium 库和相应的 WebDriver(如 ChromeDriver)。以下是基本的环境配置代码:

from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.chrome.options import Options
import configdef setup_driver():# 加载配置selenium_config = {'chrome_driver_path':'chrome_driver_path','user_data_dir':'user_data_dir'}# 设置 ChromeDriver 的服务service = Service(selenium_config.chrome_driver_path)# 配置 ChromeDriver 的选项options = Options()options.add_argument(f'--user-data-dir={selenium_config['user_data_dir']}')options.add_argument("--disable-blink-features=AutomationControlled")options.add_argument("--user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36")# 初始化 WebDriverreturn webdriver.Chrome(service=service, options=options)
3. 分页处理的基本思路

我们需要遍历每一页上的文件链接,点击并提取信息。对于每一个文件链接,我们将在新标签页中打开它,获取所需的信息后再关闭标签页。最后,我们会处理下一页的按钮,直到没有下一页为止。

4. 代码示例

以下是简化和优化后的代码示例:

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as ECdef setup_driver():import configfrom selenium.webdriver.chrome.service import Servicefrom selenium.webdriver.chrome.options import Optionsselenium_config = {'chrome_driver_path':'chrome_driver_path','user_data_dir':'user_data_dir'}service = Service(selenium_config.chrome_driver_path)options = Options()options.add_argument(f'--user-data-dir={selenium_config['user_data_dir']}')options.add_argument("--disable-blink-features=AutomationControlled")options.add_argument("--user-agent=Mozilla/5.0")return webdriver.Chrome(service=service, options=options)def click_all_links_on_page(driver):
# 执行操作passdef paginate_and_scrape():driver = setup_driver()try:driver.get('https://XXXX/xXXX')# 等待页面加载完成WebDriverWait(driver, 60).until(lambda d: d.execute_script('return document.readyState') == 'complete')print(f'This page title is : {driver.title}')while True:click_all_links_on_page(driver)try:# 获取下一页按钮元素next_button = driver.find_element(By.XPATH, "//button[@class='btn-next' and not(@disabled)]")next_button.click()# 等待页面加载完成WebDriverWait(driver, 20).until(lambda d: d.execute_script('return document.readyState') == 'complete')except Exception as e:print(f'Error occurred or no more next button: {e}')breakfinally:driver.quit()if __name__ == "__main__":paginate_and_scrape()
5. 总结

本文介绍了如何使用 Selenium 实现自动化分页处理与信息提取。通过合理的代码简化和优化,可以提高脚本的可读性和执行效率。希望这篇博文能帮助您在实际项目中实现高效的网页信息提取。如果您有任何问题或建议,欢迎在评论区留言讨论。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/38767.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JS(JavaScript)的BOM操作

天行健,君子以自强不息;地势坤,君子以厚德载物。 每个人都有惰性,但不断学习是好好生活的根本,共勉! 文章均为学习整理笔记,分享记录为主,如有错误请指正,共同学习进步。…

一文汇总VSCode多光标用法

光标的创建 按住alt,鼠标左键单击,在单击位置生成光标/删除光标 按住ctrlalt,单击↑/↓,在每行同一个位置(若某一行较短,则在行尾)生成光标,这个不会删除光标,只会在光标…

Day61 代码随想录打卡|回溯算法篇---组合优化

本篇是针对上一题的优化,因为在计算所有可能的组合结果时,不是每一条路径都是我们需要遍历的,如图,当n和k都为4的时候,其实最终的结果只有一个[1,2,3,4]是符合结果的。因此我们遍历的时候就不需要遍历每一条边&#xf…

数据结构递归(01)汉诺塔经典问题

说明:使用递归时,必须要遵守两个限制条件: 递归存在限制条件,满⾜这个限制条件时,递归不再继续; 每次递归调⽤之后越来越接近这个限制条件; 1 汉诺塔(Hanoi Tower)经典…

java List接口介绍

List 是 Java 集合框架中的一个接口,它继承自 Collection 接口,代表一个有序的元素集合。List 允许重复的元素,并且可以通过索引来访问元素。Java 提供了多种 List 的实现,如 ArrayList、LinkedList、Vector 和 CopyOnWriteArrayList。 List接口概述 List 接口提供了一些…

打造未来应用:Python GUI库全景指南与实战演练

打造未来应用:Python GUI库全景指南与实战演练 引言 在软件开发领域,图形用户界面(GUI)对于提升用户体验至关重要。Python凭借其简洁的语法和强大的库支持,为GUI编程提供了丰富的选项。本文将深入探讨Python中的GUI库…

卷积层的输出

卷积层的输出 flyfish 在卷积神经网络中,卷积层的输出尺寸计算主要依赖于输入尺寸、卷积核尺寸、步幅(stride)和填充(padding)。 经典的卷积神经网络模型 - AlexNet 标准卷积 以AlexNet第一个卷积层作为说明 imp…

SpringBoot设置自动跳转前端界面

一般情况下,我们的Application启动文件的内容为一行的运行代码,默认启动项目以后不会自动跳转到我们的前端页面 public static void main(String[] args) {SpringApplication.run(DemoApplication.class, args);} 这里我的可以通过设置文件的内容&#…

【系统架构设计师】计算机组成与体系结构 ⑤ ( 主存编址计算 | 存储单元 | 内存编址 | 存储单元个数 和 总容量 计算 )

文章目录 一、主存编址计算1、存储单元2、内存编址3、存储单元个数 和 总容量 计算4、主存编址案例 一、主存编址计算 1、存储单元 存储单元 概念 : 最小存储单位 : 1 bit 是 计算机中最小的 容量单位 , 只能表示 0 或 1 ;存储单元 : 在 存储器 中 , 查找 1 bit 是比较困难的 …

c++全排列函数next_permutation详解

c全排列函数next_permutation详解 在 C 的 库中,next_permutation 是一个用于计算给定范围内元素的下一个排列的函数。这个函数特别适用于对整数序列或可以比较的元素进行全排列的生成。 参数 first, last:表示范围的迭代器,即要重新排列的…

300价值指数投资价值

300价值指数是价值股的代表。 它的选股是在沪深300指数里面按照低市盈率,低市净率,低市现率,高股息率挑选的100只股票组成。 这个指数是由中证指数公司于2008年1月21日发布,以2004年12月31日为基准,是个老牌指数了。 …

Go线程实现模型-G

G 概述 一个G就代表一个goroutine(或称Go例程),也与go函数相对应。作为编程人员,我们只是使用go语句向Go的运行时系统提交一个并发任务,而Go的运行时系统则会按照我们要求并发地执行它 Go编译器会把go语句变成对内部函数newproc的调用&…

美德政府转移比特币、以太坊引发市场下跌

小编通过链上地址监控,令人意外的发现德国和美国政府都进行了大规模的数字货币转移,转移了价值 1.5 亿美元的比特币和以太坊。这些大额转移势必引起了数字货币市场分析师和投资者的关注。 BTC价格 从今年起德国政府已转移了其持有的相当一部分比特币&…

OPPO保活方案测试

下面是OPPO手机各种方案的测试记录, 也包括无效的方案 1. OPPO的电源设置和应用省电设置 OPPO手机电源设置里面不限制性能, 优化全部关闭, "自动优化"修改成不优化 第四张图应用省电设置里面的开关也全部打开 图片不能在本地保存, 保存在文件<OPPO手机电池设置和…

【MySQL备份】Percona XtraBackup实战篇

目录 1. 前言 2.准备工作 2.1.创建备份目录 2.2.配置/etc/my.cnf文件 2.3.授予root用户BACKUP_ADMIN权限 3.全量备份 4.准备备份 5.数据恢复 6.总结 "实战演练&#xff1a;利用Percona XtraBackup执行MySQL全量备份操作详解" 1. 前言 本文将继续上篇【My…

玩Stable Diffusion不可不知的5款真人模型!大佬都在用!(附模型包)

模型对于AI绘画起决定性作用&#xff0c;今天推荐5款超好用的Stable Diffusion模型。 这些模型都在市面上收获了各种好评&#xff0c;而且各具特色&#xff0c;能满足你对写实人像的各种要求。 1、MajicMIX realisric 麦橘写实 写实系的人像大模型&#xff0c;具有非常好的质…

uboot 环境变量初始化流程

初始化在board_f.c,读取flash环境变量到ddr内在board_r.c arch/arm/cpu/armv8/start.Sbl _mainarch/arm/lib/crt0_64.S xxxxbl board_init_fxxxxb board_init_r commonboard_f.c static const init_fnc_t init_sequence_f[] {setup_mon_len,arch_cpu_init, /* basic arch c…

数据结构笔记第3篇:双向链表

1、双向链表的结构 注意&#xff1a;这里的 "带头" 跟前面我们说的 "头结点" 是两个概念&#xff0c;实际前面的在单链表阶段称呼不严谨&#xff0c;但是为了同学们更好的理解就直接称为单链表的头结点。 带头链表里的头结点&#xff0c;实际为 "哨兵…

勒索病毒--认知与防范

免责声明:本文仅做技术交流与学习... 目录 应急响应-勒索病毒 1、什么是勒索病毒&#xff1f; 勒索病毒是一种新型电脑病毒&#xff0c;主要以RDP爆破、邮件、程序木马、网页挂马的形式进行传播。该病毒性质恶劣、危害极大&#xff0c;一旦感染将给用户带来无法估量的损失。…

已解决 SyntaxError: invalid syntax,Python报错原因和解决方案。

「作者简介」&#xff1a;冬奥会网络安全中国代表队&#xff0c;CSDN Top100&#xff0c;就职奇安信多年&#xff0c;以实战工作为基础著作 《网络安全自学教程》&#xff0c;适合基础薄弱的同学系统化的学习网络安全&#xff0c;用最短的时间掌握最核心的技术。 这篇文章带大家…