You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Selenium循环检测缺货关键词逻辑优化求助

商品库存检测代码修复

你的问题出在for循环的逻辑错误:原代码只要第一个关键词没找到就直接break,根本没检查后面的关键词;而且找到一个关键词后就立刻刷新,也没处理完整个检查流程。

正确的逻辑应该是:

  • 每次检测时,先检查页面中是否包含任意一个缺货关键词
  • 如果有缺货关键词存在,说明商品仍缺货,等待30秒后刷新页面继续检测
  • 如果所有缺货关键词都不存在,说明商品有货,直接跳出循环

修改后的代码如下:

import time
from selenium import webdriver

keywords = ['no stock','out of stock','not available']
url = "你的目标商品页面URL"  # 替换为实际商品页面URL
driver = webdriver.Chrome()  # 根据你的浏览器调整驱动类型
driver.get(url)

n = 0
while True:
    n += 1
    print(f'第{n}次检测')
    
    # 批量检查页面是否包含任意缺货关键词
    is_out_of_stock = any(keyword in driver.page_source for keyword in keywords)
    
    if is_out_of_stock:
        print('检测到缺货关键词,30秒后刷新页面重新检测')
        time.sleep(30)
        driver.refresh()  # 用refresh刷新当前页面,比重复get(url)更高效
    else:
        print('未检测到任何缺货关键词,商品已到货!')
        break

# 检测结束后关闭浏览器
driver.quit()

关键逻辑说明:

  • 使用any()函数一次性完成所有关键词的判断,只要有一个关键词存在就判定为缺货
  • 用driver.refresh()替代driver.get(url),避免重复请求整个页面,提升效率
  • 只有当所有缺货关键词都未被检测到时,才跳出循环结束检测

内容的提问来源于stack exchange,提问作者Wilson

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 00:25:23