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

目录

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

正文

1. 项目背景与目标

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

2. Selenium 环境配置

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

python 复制代码
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. 代码示例

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

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

相关推荐
一次旅行12 小时前
Apifox自动化测试(三)
自动化·测试总结
小杨互联网14 小时前
JAR逆向工程实战对比:传统工具 vs 自动化解决方案
运维·自动化·jar·jar自动逆向工具·jar逆向源码
二进制的Liao1 天前
【编程】脚本编写入门:从零到一的自动化之旅
数据库·python·算法·自动化·bash
程序员小远1 天前
软件测试之bug分析定位技巧
自动化测试·软件测试·python·测试工具·职场和发展·测试用例·bug
明达智控技术1 天前
MR30分布式I/O模块服务换热站项目,守护万家温暖
分布式·物联网·自动化
捷米研发三部1 天前
新能源激光焊接工作站西门子1500系列PLC通过Profinet转CANopen智能网关和机器人进行通讯案例
网络·自动化
star_start_sky2 天前
住宅代理网络:我最近用来数据采集和自动化的小工具
网络·爬虫·自动化
整列机厂家-东莞唯思特2 天前
异形零件自动化排列:整列机与传统振动盘的 5 大技术维度解析
科技·自动化·制造
安冬的码畜日常2 天前
【JUnit实战3_33】第二十章:用 JUnit 5 进行测试驱动开发(TDD)(下)——TDD 项目的重构过程及新功能的开发实战
测试工具·junit·单元测试·测试驱动开发·tdd·junit5·test-driven