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

相关推荐
霍格沃兹测试开发学社测试人社区1 小时前
新手指南:通过 Playwright MCP Server 为 AI Agent 实现浏览器自动化能力
运维·人工智能·自动化
桃子不淘气9 小时前
3:Django-migrate
测试工具
将车24412 小时前
selenium实现自动化脚本的常用函数
python·selenium·自动化
hwman12 小时前
使用Selenium Server 4连接已经运行的Firefox
selenium·测试工具·firefox
卓码软件测评14 小时前
第三方课题验收测试机构:【API测试工具Apifox使用指南】
功能测试·测试工具·单元测试·压力测试·可用性测试
程序员杰哥15 小时前
UI自动化测试实战:从入门到精通
自动化测试·软件测试·python·selenium·测试工具·ui·职场和发展
高光视点16 小时前
伊萨推出升级版SUPRAREX™ PRO自动化切割设备:更大尺寸、更强结构、更高安全性、更易维护
运维·自动化
m0_6501082416 小时前
【论文精读】R&D-Agent-Quant:基于多智能体框架的量化因子与模型研发自动化系统
自动化·llm·agent·论文精读·量化分析·多智能体协同系统·金融分析
b***251116 小时前
深圳比斯特自动化|圆柱电池测试设备核心功能与技术发展解析
运维·自动化
King's King16 小时前
自动化仓库总体设计
运维·自动化