本脚本用于监视网站公告,当网站公告更新时,会自动发送邮件通知。
通过XPath解析网页
自定义网页解析XPath, 每个网页一个配置文件, 以适应不同网站的公告格式
- 安装依赖
pip install -r requirements.txt
- 修改解析配置文件
参考targetConfigs/
目录下的配置文件, 填入网址及解析公告的XPath,
以及对应时间, 标题, 链接的XPath.
解析配置文件命名格式为自定义名.target.yaml
,
如监视对象命名为example
, 则配置文件名为example.target.yaml
- 修改邮件配置文件
参考secret.config.template.yaml
文件,
填写对应信息后重命名为secret.config.yaml
.
其中observers
配置监视对象及通知的邮箱地址, 如监视对象为example
,
使用myqq@qq.com
接收通知, 则配置为:
observers:
example:
- myqq@qq.com
- 指定配置文件路径
在config.yaml
文件中指定了记录文件路径与解析配置文件的路径,
如需修改, 请修改config.yaml
文件(如在系统定时任务中调用时, 修改为绝对路径)
- 运行
python main.py <config.yaml文件路径>
参数必填, 为config.yaml
文件路径,
如在系统定时任务中调用时, 修改为绝对路径
- Python 3.6+
- lxml
- requests
- smtplib
- ...
- 修复对于仅有日期的公告, 会可能无法获取的问题
当目标公告时间仅有date时, 由目前仅比较公告时间与上次运行脚本时间的机制, 会出现当天01:00运行脚本无新公告, 02:00发出新公告, 03:00再次运行脚本, 新公告视为00:00发出的, 从而忽略该公告.
若将仅有日期的公告视为当天23:59发出, 则会出现当天运行多次脚本时, 会重复发送公告的情况.
考虑对于仅有日期的公告, 在配置中注明, 并特殊处理
对仅有日期的公告, 在解析配置中注明onlyDate, 并在运行记录文件中, 保存上次发送的公告标题, 并在下次运行脚本时, 对已记录的公告标题, 不再发送该公告.
- 重构main.py, 对配置获取过程及运行记录过程进行封装, 封装为RunTimeContext