• Selenium:Web自动化框架




    1、Selenium概述


    Selenium(Web Browser Automation)的初衷是Web应用自动化测试。Selenium还广泛应用于爬虫,爬虫需要让浏览器自动运行网址来获取我们需要的内容

    Selenium不是单个软件,它是由一系列的工具组成

    Selenium库支持多种编程语言:Python、Java等,支持多种浏览器:Chrome、Firefox、Edge等,支持跨平台:Windows、MacOS、Linux

    Selenium的动作操作可以使用Selenium调用WebDriver执行与用户交互相关的动作,例如单击、右键单击、悬停、拖放等。通过模拟用户在网页上的行为,可以实现更真实的测试和自动化操作

    动作操作在爬虫领域具有重要的作用和意义。虽然传统的爬虫主要关注数据的抓取和解析,但随着网站的逐渐发展和演变,越来越多的网页采用了动态加载、异步加载或基于JavaScript的交互式元素

    在这种情况下,传统的静态页面爬取方法可能无法获取到完整的数据或准确的页面状态。而动作操作则可以模拟人类用户与网页的交互行为,使爬虫能够处理这些动态页面并正确获取所需的数据

    Selenium优势在于:

    • 处理动态加载:许多网页使用AJAX或其他技术进行动态加载内容。通过执行动作操作,爬虫可以模拟用户的滚动、点击等操作,触发页面的动态加载,获取完整的数据
    • 解析交互式元素:某些网页包含需要用户交互才能显示的元素,例如展开更多评论、加载更多图片等。通过模拟用户操作,爬虫可以触发这些元素的显示,并正确解析其中的数据
    • 模拟登录和表单提交:一些网站要求用户登录或填写表单后才能访问所需的数据。通过动作操作,爬虫可以模拟登录操作或填写表单,以获取需要的数据
    • 处理验证码:许多网站为了防止机器人爬取数据而使用验证码。通过动作操作,爬虫可以模拟用户输入验证码或使用其他识别方式来处理验证码验证过程

    Selenium的动作操作在爬虫中的应用可以提高数据的完整性和准确性,使爬虫能够更好地应对动态页面和交互式元素的挑战,从而实现更全面、高效的数据采集任务

    Selenium中文文档:https://www.selenium.dev/zh-cn/documentation/webdriver/getting_started/

    2、Selenium环境搭建


    1)下载浏览器驱动(WebDriver)

    WebDriver主要用于驱动浏览器运行

    Chrome浏览器的WebDriver(chromedriver.exe)下载安装配置:

    # Application目录(右键图标打开文件所在位置)
    C:\Users\cc\AppData\Local\Google\Chrome\Application
    # Python解释器所在目录(或Scripts下)
    E:\Program Files\Python\Python310
    E:\Program Files\Python\Python310\Scripts
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 验证:Win+R,打开cmd命令行,使用如下命令验证:
    chromedriver.exe
    
    • 1

    2)安装:

    pip install selenium
    
    • 1

    3、Selenium基本操作


    使用到的模块:

    from selenium import webdriver
    from selenium.webdriver.common.by import By
    from selenium.webdriver import ActionChains, Keys  # 动作类
    from selenium.webdriver.support.wait import WebDriverWait  # 等待类
    from selenium.webdriver.support import expected_conditions as EC  # 等待条件类
    from selenium.webdriver.support.select import Select  # Select类
    import time
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    3.1、页面等待加载

    # 强制等待10s
    time.sleep(10)
    
    # 显式等待(Explicit Wait):等待特定条件达成
    # 最长等待时间10s,EC.presence_of_element_located()是一个预定义的条件,用于等待元素出现在页面中
    element = WebDriverWait(driver, 10).until(
        EC.presence_of_element_located((By.XPATH, 'expr'))
    )
    
    # 隐式等待(Implicit Wait):等待一定时间段
    # 最长等待时间10s,如果元素未找到将继续等待直到最长时间
    driver.implicitly_wait(10)
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
  • 相关阅读:
    C++学习第二十九天----引用变量和c语言之register关键字
    Word处理控件Aspose.Words功能演示:使用 Python 在 Word 文档中处理 VBA 宏
    多因素序贯实验设计(最陡坡法)
    # 设计模式 #5.6 Memento备忘录,行为型模式
    材料科学基础学习指导-吕宇鹏-名词和术语解释-第1章:晶体结构
    MySql版本号查看命令
    测试22222
    开源工具 | ASV-Subtools更新:runtime模块重磅发布
    遥感数据与作物模型同化技术
    JAVA实现删除某天之前的数据文件
  • 原文地址:https://blog.csdn.net/weixin_55629186/article/details/133871422