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

  • 相关阅读:
    java基础入门-15-【集合(Map&可变参数&集合工具类)】
    react151618刷新几次的问题
    OpenWRT设置自动获取IP,作为二级路由器
    人工智能的未来:技术与道德的交汇
    1python模块和库
    开源AI搜索平台Search4All
    API响应状态
    【程序大侠传】异步架构应用回调数据接收接口偶发NPE
    MySQL字段的字符类型该如何选择?千万数据下varchar和char性能竟然相差30%?
    python 之爬虫基础(2)
  • 原文地址:https://blog.csdn.net/abments/article/details/140050438