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

相关推荐
RZer4 小时前
Hypium+python鸿蒙原生自动化安装配置
python·自动化·harmonyos
未来并未来2 天前
通过反射搭建简易的Servlet层自动化映射参数并调用Service层业务方法的框架
运维·servlet·自动化
人机与认知实验室2 天前
自动化、信息化后面是智能化,智能化后面是?
运维·自动化
愈努力俞幸运2 天前
python selenium 用法教程
python·selenium
Future_yzx2 天前
Selenium 浏览器操作与使用技巧——详细解析(Java版)
java·selenium·测试工具
Joanna-升3 天前
利用飞书机器人进行 - ArXiv自动化检索推荐
论文阅读·自动化·飞书·arxiv·科研工具·论文自动检索
Algorithm-0073 天前
【Postman 接口测试】接口用例设计与评审
测试工具·postman
武陵悭臾3 天前
网络爬虫学习:应用selenium获取Edge浏览器版本号,自动下载对应版本msedgedriver,确保Edge浏览器顺利打开。
学习·selenium·edge·deepseek·winreg·zipfile
机器视觉小小测试员3 天前
工业相机常用词语解释
运维·ui·自动化·工业相机
智识世界Intelligence3 天前
深度研究新范式:通过Ollama和DeepSeek R1实现自动化研究
运维·自动化