Python实现Xpath不存在时播放MP3 定时2分钟检测网站变更方法
网站变更告警脚本实现方案
代码逻辑修正
你原有代码的问题是driver.find_element在匹配不到元素时会直接抛出NoSuchElementException异常,不会返回布尔值,无法直接用于if条件判断,建议用find_elements方法实现判断:
# 导入依赖包 from selenium import webdriver from selenium.webdriver.common.by import By import time import webbrowser # 初始化浏览器驱动,建议提前安装webdriver-manager自动适配驱动版本,无需手动下载 driver = webdriver.Chrome() # 替换为你需要监测的目标网站地址 TARGET_URL = "你的目标网站URL" # 替换为你的音频文件路径 ALERT_AUDIO_PATH = r"C:\Users\Julian Layton\Desktop\Andalusia\I Remember.mp3" # 监测间隔,单位秒,2分钟即120秒 CHECK_INTERVAL = 120 def site_check(): driver.get(TARGET_URL) # 等待页面加载完成,可根据网络情况调整时长,也可替换为显式等待提高稳定性 time.sleep(3) # find_elements匹配不到元素会返回空列表,空列表布尔值为False if driver.find_elements(By.XPATH, "/html/body/div[1]/div[2]/h1"): # 元素存在,直接结束本次检测 return # 元素不存在,触发告警 webbrowser.open(ALERT_AUDIO_PATH) if __name__ == "__main__": while True: site_check() time.sleep(CHECK_INTERVAL)
如果不想触发告警时弹出浏览器窗口,可替换音频播放方案:安装1.2.2版本的playsound库pip install playsound==1.2.2,将webbrowser.open(ALERT_AUDIO_PATH)替换为playsound(ALERT_AUDIO_PATH)即可。
VS Code运行操作步骤
- 打开VS Code终端,选中你使用的Python解释器,执行
pip install selenium安装依赖 - 如果使用自动驱动管理,额外执行
pip install webdriver-manager,将驱动初始化代码替换为:
from selenium.webdriver.chrome.service import Service from webdriver_manager.chrome import ChromeDriverManager driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()))
- 脚本编辑完成后,在VS Code终端执行
python 你的脚本文件名.py即可启动监测,保持终端窗口不关闭,脚本就会每2分钟自动执行一次检测。
内容的提问来源于stack exchange,提问作者Julian Layton
相关产品推荐
相关产品推荐

