使用 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 config

def 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")
    
    # 初始化 WebDriver
    return 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 EC

def setup_driver():
    import config
    from selenium.webdriver.chrome.service import Service
    from selenium.webdriver.chrome.options import Options
    
    selenium_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):
# 执行操作
    pass

def 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}')
                break
    finally:
        driver.quit()

if __name__ == "__main__":
    paginate_and_scrape()
5. 总结

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

短视频利器 ffmpeg (2)

ffmpeg 官网这样写到 Converting video and audio has never been so easy. 如何轻松简单的使用: 1、下载 官网:http://www.ffmpeg.org 安装参考文档: https://blog.csdn.net/qq_36765018/article/details/139067654 2、安装 # 启用RPM …

华强盛网络变压器外部电路如何接线

图一是 华强盛 Hqst 网络变压器工厂19926430038 华强盛电子导读: 网络变压器的外部电路接线通常依赖于其设计和用途。一般来说,网络变压器有多个端口,每个端口可能用于不同的连接或功能。以下是一些可能的接线方式: 1. **主电源…

自研网关架构设计

网关项目 1. 了解网关网关横向对比为什么自研网关 2. 架构设计技术栈技术要点异步化设计使用缓存缓冲合理使用串行化吞吐量为王合适的工作线程 架构图 1. 了解网关 概念 访问数据、业务逻辑或功能的 “前门”负责处理接受和处理调用过程中的所有任务 类型 RESTful APl 使用…

核方法总结(三)———核主成分(kernel PCA)学习笔记

一、核主成分 1.1 和PCA的区别 PCA (主成分分析)对应一个线性高斯模型(参考书的第二章),其基本假设是数据由一个符合正态分布的隐变量通过一个线性映射得到,因此可很好描述符合高斯分布的数据。然而在很多实…

深入分析 Android BroadcastReceiver (七)

文章目录 深入分析 Android BroadcastReceiver (七)1. 高级应用场景1.1 示例:动态权限请求1.2 示例:应用内通知更新 2. 安全性与性能优化2.1 示例:设置权限防止广播攻击2.2 示例:使用 LocalBroadcastManager2.3 示例:在…

零成本打造精品宣传册

​随着互联网的发展,企业和个人对宣传册的需求日益增长,然而,高质量的宣传册制作往往需要不菲的成本。那么,如何零成本打造精品宣传册呢? 一、明确定位和目标群体 在制作宣传册之前,首先要明确其定位和目标…

关于怎么将wireshark抓包视频流转为视频播放出来

0.安装wireshark 安装PotPlayer 1.将以下两个插件放入 C:\Program Files\Wireshark\plugins 目录中 2.筛选视频流数据包,右键Decode As… 改为RTP 或者 右键->follow(追踪流)->UDP stream 然后叉掉弹窗 3.选择菜单Edit->Prefe…

职责链让树状分支更严谨更易读更易维护

业务场景 传统方式就不列举了 职责链解决 Chain 类 class Chain {fn: Function;successor: any;constructor(fn: Function) {this.fn fn;this.successor null;}setNextSuccessor(successor: any) {return (this.successor successor);}passRequest() {var ret this.fn.a…

微信公众号扫码授权登录

【微信扫登录】原理说明 1、准备工作:注册开放微信公众号。获得此账号的AppID和AppSecret。 2、发起授权登录:通过授权链接或者扫码授权二维码的方式,获取登录code,通过code获取access_token。 3、成功获取access_token即代表登…

[CTF]-PWN:mips反汇编工具,ida插件retdec的安装

IDA是没有办法直接按F5来反汇编mips的汇编的,而较为复杂的函数直接看汇编不太现实,所以只能借用插件来反汇编 先配置环境,下载python3.4以上的版本,并将其加入到环境变量中 下载retdec 地址:Release v1.0-ida80 ava…

常见Web认证方式对比

认证是一个在用户或者设备在访问一个受限的系统时,鉴定用户凭据的过程,即确认“你是谁”的问题。最常见的认证用户的方式是通过用户名和密码的形式进行校验,目前存在多种校验方式,本文将对其进行一个简单的对比,使得大…

今天起,全球所有Mac用户可免费安装桌面版ChatGPT

在 macOS 上,用户在安装新的 ChatGPT 应用程序后,使用 Option Space 的键盘组合即可快速调用 ChatGPT。 刚刚,OpenAI 宣布推出适用于 macOS 的应用程序。 虽然 Mac 应用程序尚未在 Mac App Store 中提供,但用户可以直接从 Open…

Lean4Game 开发教程 | 数学形式化

引言 Lean 是一门用于形式化证明的编程语言,它允许严格证明数学定理和验证软件代码的正确性。 本篇介绍 Lean 游戏的编写和发布方式。这类游戏不仅利于对 Lean 本身的学习,对学科知识的理解,还能推动数学圈内人对 Lean 的接触学习。 Lean4…

elementUI搭建使用过程

前言 Element,一套为开发者、设计师和产品经理准备的基于 Vue 2.0 的桌面端组 件库 安装 ElementUI 在终端命令行输入 npm i element-ui -S 在 main.js 中写入以下内容: import ElementUI from element-ui ; import element-ui/lib/theme-chalk/i…

0-30 VDC 稳压电源,电流控制 0.002-3 A

怎么运行的 首先,有一个次级绕组额定值为 24 V/3 A 的降压电源变压器,连接在电路输入点的引脚 1 和 2 上。(电源输出的质量将直接影响与变压器的质量成正比)。变压器次级绕组的交流电压经四个二极管D1-D4组成的电桥整流。桥输出端…

北邮《计算机网络》蒋老师思考题及答案-传输层

蒋yj老师yyds! 答案自制,仅供参考,欢迎质疑讨论 问题一览 传输层思考题P2P和E2E的区别使用socket的c/s模式通信,流控如何反映到编程模型三次握手解决什么问题举一个两次握手失败的例子为什么链路层是两次握手而非三次?…

深入理解 XML 和 HTML 之间的区别

在现代网络技术的世界中,XML(可扩展标记语言)和 HTML(超文本标记语言) 是两个非常重要的技术。尽管它们都使用标签和属性的格式来描述数据,但它们在形式和用途上有显著的区别。 概述 什么是 XML&#xff…

安装CLion配置opencv和torch环境

配置操作如图,源码见底部附录部分 安装CLion 官网下载 创建项目 设置环境 调整类型为release 配置opencv和项目 编译环境 编译后 重启CLion 测试opencv环境 测试代码 运行main.cpp显示图片 测试torch环境 没标红表示配置成功 附件 CMakeList.txt cmake_mi…

Redis集群部署合集

目录 一. 原理简述 二. 集群配置​​​​​​​ 2.1 环境准备 2.2 编译安装一个redis 2.3 创建集群 2.4 写入数据测试 实验一: 实验二: 实验三: 实验四: 添加节点 自动分配槽位 提升节点为master: 实验…

陪诊小程序开发:寻找陪诊师更加快速,全程陪护!

陪诊行业是一个新兴行业,在当下市场中具有较大的发展前景。对于无法陪家人看病或者对医院不熟悉的人来说,陪诊师成为了刚需!目前随着社会的发展,人们的生活节奏不断加快,陪诊市场的需求量也在不断增加,发展…