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
相关产品推荐
相关产品推荐

