如何使用Selenium/Python查找比对文本属性 实现电子烟库存不足提醒
实现方案建议
1. 现有代码适配调整
当前Selenium 4.x+版本已经废弃find_element_by_xpath写法,也不支持直接传入chromedriver路径初始化浏览器对象,需要先做兼容调整,避免运行报错。
2. 核心功能实现思路
- 不要直接读取下拉框的整体文本,遍历下拉框下的每一个
option子元素,单独获取每个选项的文本内容 - 用正则表达式从选项文本中拆分出口味名称和库存数字
- 匹配到库存数字小于10的,直接打印对应提醒
- 如果需要监控多个热门款,把所有目标商品URL存入列表循环执行逻辑即可
3. 调整后可运行代码
import re import time from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.chrome.service import Service from selenium.webdriver.support.wait import WebDriverWait from selenium.webdriver.support import expected_conditions as EC # 配置chromedriver路径 PATH = "C:\Program Files (x86)\chromedriver.exe" service = Service(PATH) driver = webdriver.Chrome(service=service) # 如果要监控多个热门款,把url存在这个列表里循环即可 target_urls = [ "https://safagoods.com/vape-shop/disposable-vape-devices/huge-disposables" ] # 库存阈值 STOCK_THRESHOLD = 10 for url in target_urls: driver.get(url) # 显式等待下拉框加载完成,最多等10秒 select_elem = WebDriverWait(driver, 10).until( EC.presence_of_element_located((By.XPATH, "//*[@id='input-option2231']")) ) # 获取所有口味选项 option_list = select_elem.find_elements(By.TAG_NAME, "option") for option in option_list: option_text = option.text.strip() if not option_text: continue # 提取文本中的数字作为库存,可根据实际页面文本格式调整正则规则 stock_match = re.search(r'\d+', option_text) if stock_match: stock = int(stock_match.group()) # 提取口味名,去掉库存相关的数字、符号等冗余内容 flavor = re.sub(r'[()()\d::库存\s]*$', '', option_text).strip() if stock < STOCK_THRESHOLD: print(f"{flavor}即将售罄!") driver.close()
4. 扩展调整说明
- 如果实际页面的口味+库存文本格式和现有正则匹配逻辑不符,可以自行调整正则规则适配
- 需要定时监控的话,外层加
while True循环搭配time.sleep()设置间隔时间即可 - 需要推送通知到微信、邮箱的话,补充对应推送接口的调用逻辑即可
内容的提问来源于stack exchange,提问作者wawa
相关产品推荐
相关产品推荐

