/website-notice-watcher

get the web notice, compare the time, notice you by email

Primary LanguagePythonThe UnlicenseUnlicense

网站公告监视脚本

介绍

本脚本用于监视网站公告,当网站公告更新时,会自动发送邮件通知。

通过XPath解析网页

自定义网页解析XPath, 每个网页一个配置文件, 以适应不同网站的公告格式

使用方法

  1. 安装依赖
pip install -r requirements.txt
  1. 修改解析配置文件

参考targetConfigs/目录下的配置文件, 填入网址及解析公告的XPath, 以及对应时间, 标题, 链接的XPath.

解析配置文件命名格式为自定义名.target.yaml, 如监视对象命名为example, 则配置文件名为example.target.yaml

  1. 修改邮件配置文件

参考secret.config.template.yaml文件, 填写对应信息后重命名为secret.config.yaml.

其中observers配置监视对象及通知的邮箱地址, 如监视对象为example, 使用myqq@qq.com接收通知, 则配置为:

observers:
  example:
    - myqq@qq.com
  1. 指定配置文件路径

config.yaml文件中指定了记录文件路径与解析配置文件的路径, 如需修改, 请修改config.yaml文件(如在系统定时任务中调用时, 修改为绝对路径)

  1. 运行
python main.py <config.yaml文件路径>

参数必填, 为config.yaml文件路径, 如在系统定时任务中调用时, 修改为绝对路径

依赖

  • Python 3.6+
  • lxml
  • requests
  • smtplib
  • ...

更新日志

2023-08-16

  • 修复对于仅有日期的公告, 会可能无法获取的问题

当目标公告时间仅有date时, 由目前仅比较公告时间与上次运行脚本时间的机制, 会出现当天01:00运行脚本无新公告, 02:00发出新公告, 03:00再次运行脚本, 新公告视为00:00发出的, 从而忽略该公告.

若将仅有日期的公告视为当天23:59发出, 则会出现当天运行多次脚本时, 会重复发送公告的情况.

考虑对于仅有日期的公告, 在配置中注明, 并特殊处理

对仅有日期的公告, 在解析配置中注明onlyDate, 并在运行记录文件中, 保存上次发送的公告标题, 并在下次运行脚本时, 对已记录的公告标题, 不再发送该公告.

  • 重构main.py, 对配置获取过程及运行记录过程进行封装, 封装为RunTimeContext