一、上代码
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
函数,它接受url
、username
和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 结构变化敏感,需要经常调整脚本。