Python - selenium自动化登录获取网页指定内容

一、上代码

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.chrome.service import Service as ChromeService
from selenium.webdriver.chrome.options import Options as ChromeOptions
import time

def get_inventory_numbers_with_selenium(url, username, password):
    # 设置 Chrome 选项
    chrome_options = ChromeOptions()
    chrome_options.add_argument("--headless")  # 无头模式,不打开浏览器界面
    #提前下载好与浏览器对应的驱动
    chrome_service = ChromeService("F:\F\chrome\chromedriver-win64-v118\chromedriver.exe")
    driver = webdriver.Chrome(service=chrome_service, options=chrome_options)

    try:
        # 打开页面
        driver.get(url)
        time.sleep(5)  # 等待页面加载,可以根据实际情况调整等待时间

        # 找到在库存和在途数量的元素
        stock_elem = driver.find_element(By.CSS_SELECTOR, 'div.con.sku-items span[data-v-4e5e55da=""]:nth-child(1)')
        transit_elem = driver.find_element(By.CSS_SELECTOR, 'div.con.sku-items span[data-v-4e5e55da=""]:nth-child(2)')

        # 获取文本
        stock_num = stock_elem.text
        transit_num = transit_elem.text

        return stock_num, transit_num

    finally:
        driver.quit()

if __name__ == '__main__':
    url = 'https://www.xxx.com/detail/1559'
    username = 'xxxx@qq.com'
    password = 'xxx'
    stocknum, transitnum = get_inventory_numbers_with_selenium(url, username, password)

    print(f'Stock in hand: {stocknum}')
    print(f'In transit: {transitnum}')

二、运行结果

Stock in hand: 1665
In transit: 1443

三、代码解释

1、导入语句引入了 Selenium WebDriver 的核心模块,包括用于选择元素的 By 类,键盘键的操作 Keys 类,以及 ChromeDriver 的服务和选项

2、定义函数 get_inventory_numbers_with_selenium

  • 创建了 get_inventory_numbers_with_selenium 函数,它接受 urlusername 和 password 作为参数。
  • ChromeOptions 被配置为启用无头模式,即不显示浏览器界面。
  • ChromeService 被实例化,指定了 ChromeDriver 的路径,这是驱动程序用于控制 Chrome 浏览器的接口。

3、尝试打开页面和提取信息

  • 使用 driver.get(url) 打开指定的 url
  • 使用 time.sleep(5) 等待5秒,确保页面加载完成。实际中,等待时间可以根据网页加载速度调整。
  • 使用 driver.find_element 和 By.CSS_SELECTOR 方法定位页面上的元素:
    • stock_elem 和 transit_elem 分别定位了页面中在库存数量和在途数量的元素。
  • 使用 element.text 获取元素的文本内容,并将其存储在 stock_num 和 transit_num 变量中。

4、最终关闭浏览器

5、主程序调用

  总结:展示了如何使用 Selenium 和 ChromeDriver 来自动化网页操作,特别是对于需要从动态网页中提取信息的场景非常实用

四、selenium 介绍

Selenium 是一个用于自动化浏览器操作的强大工具,它最初是为Web应用程序测试而开发的,但后来被广泛应用于各种自动化任务和数据采集场景中。以下是关于 Selenium 的介绍:

1. Selenium 的作用和功能

  • 自动化浏览器操作: Selenium 可以控制浏览器进行各种操作,如打开网页、填写表单、点击按钮、提交数据等,实现对Web页面的完全模拟操作。

  • 支持多种浏览器: Selenium 支持主流的浏览器,包括 Chrome、Firefox、Safari 等,可以根据需求选择相应的浏览器进行自动化操作。

  • 跨平台支持: Selenium 是跨平台的,可以在 Windows、Mac 和 Linux 等操作系统上运行。

  • 多语言支持: Selenium 提供了多种语言的客户端库,包括 Python、Java、C#、Ruby、JavaScript 等,开发者可以选择自己熟悉的语言进行脚本编写。

2. Selenium 组成部分

  • Selenium WebDriver: 是 Selenium 的核心组件,它提供了一组用于操作浏览器的API。通过 WebDriver,可以直接控制浏览器,模拟用户操作。

  • Selenium IDE: 是一个浏览器插件,用于录制和回放用户操作,适合快速创建和调试测试脚本。

  • Selenium Grid: 是用于并行执行测试的工具,可以同时在不同的浏览器和平台上运行测试,加快测试执行的速度。

3. 使用场景

  • 自动化测试: 最初设计用于自动化Web应用程序的功能测试。自动化测试可以提高测试效率,确保软件质量。

  • 网页数据采集: 通过自动化浏览器操作,可以抓取和分析网页上的数据,用于市场分析、竞争情报等。

  • 网页监控: 可以定时访问网站并检查特定内容或状态的变化,如价格变动、产品上架等。

  • 界面交互测试: 测试Web应用程序的用户界面是否符合设计要求,如布局、颜色、字体等。

4. Selenium 的优缺点

  • 优点:

    • 强大的浏览器兼容性和跨平台支持。
    • 多语言支持,适应开发者的不同技术栈。
    • 可以模拟用户真实操作,测试更真实可靠。
  • 缺点:

    • 对浏览器和页面的渲染速度有一定依赖,可能导致运行速度较慢。
    • 对网站的 DOM 结构变化敏感,需要经常调整脚本。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值