【Python技术进阶】Selenium库的使用指南与实践

安装 Selenium 和 WebDriver

安装 Selenium

要开始使用 Selenium,首先需要安装 selenium 库,并下载适用于你浏览器的 WebDriver。

使用 pip 安装 Selenium:

pip install selenium

下载WebDriver

Selenium 需要一个 WebDriver 来与浏览器进行交互。

不同的浏览器需要不同的 WebDriver,例如 Chrome 浏览器需要 ChromeDriver,你需要根据你使用的浏览器下载相应的 WebDriver,并确保它在你的系统 PATH 中。

  • Chrome: ChromeDriver
  • Firefox: GeckoDriver
  • Edge: EdgeDriver

  • 基本用法

    初始化 WebDriver

    选择浏览器并初始化 WebDriver:

    实例

    from selenium import webdriver

    # 使用 Chrome 浏览器
    driver = webdriver.Chrome(executable_path='/path/to/chromedriver')

    # 或者使用 Firefox 浏览器
    # driver = webdriver.Firefox(executable_path='/path/to/geckodriver')

    # 或者使用 Edge 浏览器
    # driver = webdriver.Edge(executable_path='/path/to/msedgedriver')

    打开网页

    使用 get() 方法打开网页:

    driver.get("https://www.baidu.com")

    查找页面元素

    可以通过多种方式查找页面元素,例如使用 ID、类名、标签名等:

    实例

    # 通过 ID 查找元素
    search_box = driver.find_element("id", "kw")

    # 通过类名查找元素
    search_button = driver.find_element("class name", "s_ipt")

    # 通过标签名查找元素
    links = driver.find_elements("tag name", "a")

    模拟用户操作

    Selenium 可以模拟用户在浏览器中的操作,例如点击、输入文本等:

    实例

    # 在搜索框中输入文本
    search_box.send_keys("Selenium Python")

    # 点击搜索按钮

    search_button.click()

    获取元素属性和文本

    可以获取页面元素的属性值或文本内容:

    实例

    # 获取元素的文本
    element_text = search_box.text

    # 获取元素的属性值
    element_attribute = search_box.get_attribute("placeholder")

    等待

    有时页面加载需要时间,可以使用显式等待或隐式等待来确保元素可操作:

    实例

    from selenium.webdriver.common.by import By
    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.support import expected_conditions as EC

    # 显式等待
    element = WebDriverWait(driver, 10).until(
        EC.presence_of_element_located((By.ID, "kw"))
    )

    # 隐式等待
    driver.implicitly_wait(10)

    关闭浏览器

    操作完成后,记得关闭浏览器:

    driver.quit()

    简单的网页自动化

    下面是一个简单的 Selenium 项目示例,用于自动化搜索关键词,并获取结果页面的标题。

    实例

    from selenium import webdriver
    from selenium.webdriver.common.by import By
    from selenium.webdriver.common.keys import Keys
    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.support import expected_conditions as EC

    # 初始化 WebDriver(记得替换路径)
    driver = webdriver.Chrome(executable_path='/path/to/chromedriver')

    try:
        # 打开百度首页
        driver.get("https://www.baidu.com")

        # 查找搜索框元素
        search_box = driver.find_element(By.ID, "kw")

        # 输入搜索内容
        search_box.send_keys("Selenium Python")

        # 提交搜索表单
        search_box.send_keys(Keys.RETURN)

        # 等待搜索结果加载
        WebDriverWait(driver, 10).until(
            EC.presence_of_element_located((By.ID, "content_left"))
        )

        # 打印页面标题
        print("页面标题是:", driver.title)

    finally:
        # 关闭浏览器
        driver.quit()


    selenium 常用方法

    下表列出了 selenium 库的常用方法:

    方法 说明 示例代码
    webdriver.Chrome() 初始化 Chrome 浏览器实例。 driver = webdriver.Chrome()
    driver.get(url) 访问指定的 URL 地址。 driver.get("https://example.com")
    driver.find_element(By, value) 查找第一个匹配的元素。 element = driver.find_element(By.ID, "id")
    driver.find_elements(By, value) 查找所有匹配的元素。 elements = driver.find_elements(By.CLASS_NAME, "class")
    element.click() 点击元素。 element.click()
    element.send_keys(value) 向输入框中发送键盘输入。 element.send_keys("text")
    element.text 获取元素的文本内容。 text = element.text
    driver.back() 浏览器后退。 driver.back()
    driver.forward() 浏览器前进。 driver.forward()
    driver.refresh() 刷新当前页面。 driver.refresh()
    driver.execute_script(script, *args) 执行 JavaScript 脚本。 driver.execute_script("alert('Hello!')")
    driver.switch_to.frame(frame_reference) 切换到指定的 iframe。 driver.switch_to.frame("frame_id")
    driver.switch_to.default_content() 切换回主文档。 driver.switch_to.default_content()
    driver.quit() 关闭浏览器并退出驱动。 driver.quit()
    driver.close() 关闭当前窗口。 driver.close()

    作者:xiaoli8748_软件开发

    物联沃分享整理
    物联沃-IOTWORD物联网 » 【Python技术进阶】Selenium库的使用指南与实践

    发表回复