logo
0
0
WeChat Login

华东理工大学新闻通知自动抓取脚本

功能说明

  • 自动从华东理工大学新闻网站、学生处、教务处和研究生院网站抓取近期通知
  • 支持多个收件人邮箱配置和分类订阅
  • 生成美观的HTML邮件格式
  • 完整的日志记录功能
  • 智能日期解析和链接处理
  • 新增:智能代理使用模式(始终使用代理 或 失败时使用代理)
  • 新增:错误邮件通知功能(可选启用)

安装依赖

pip install -r requirements.txt

配置说明

1. 主配置文件 (config.json)

复制并修改 examples/config.example.jsonconfig.json

{ "smtp": { "server": "smtp.qq.com", "port": 587, "username": "your_email@qq.com", "password": "your_app_password", "sender_email": "your_email@qq.com" }, "days": 0, "proxy": { "enabled": false, "always_use": false, "url": "http://127.0.0.1:7890", "username": "", "password": "" }, "error_notification": { "enabled": false, "recipients": ["admin@example.com"] } }

配置说明:

  • smtp: SMTP邮件服务器配置
  • days: 抓取多少天内的通知,默认为0天
  • proxy: 代理配置(可选)
    • enabled: 是否启用代理配置
    • always_use: 是否始终使用代理(false=失败时使用代理)
    • url: 代理服务器地址
  • error_notification: 错误邮件通知配置

2. 收件人配置 (emails.json)

复制并修改 examples/emails.example.jsonemails.json

[ { "name": "张三", "email": "zhangsan@example.com", "categories": ["jwc", "news"] }, { "name": "李四", "email": "lisi@example.com", "categories": ["student", "gschool"] } ]

分类说明:

  • jwc: 教务处通知
  • news: 学校新闻网通知
  • student: 学生处通知
  • gschool: 研究生院通知
  • 不设置分类或空数组:接收所有通知

新功能特性

智能代理使用模式

  • 两种代理使用模式

    • 始终使用代理:配置always_use: true时,始终通过代理访问
    • 失败时使用代理:配置always_use: false时,先尝试直连,失败后自动启用代理重试
  • 自动重试机制

    • 请求失败时自动重试(最大2次)
    • 第一次失败时如果配置了代理但未使用,会自动启用代理重试
    • 第二次重试使用代理进行请求
    • 内置代理连接测试功能

错误邮件通知

  • 可选启用错误邮件通知功能
  • 支持配置多个错误通知收件人
  • 错误邮件包含详细错误信息和代理状态
  • 在以下情况发送错误通知:
    • 代理连接测试失败
    • 所有网站抓取失败
    • 部分网站抓取失败但仍获取到数据
    • 程序执行过程中发生未预期错误

使用方法

手动运行

python news_scraper.py

定时任务

可以使用系统的定时任务功能:

Windows (任务计划程序):

  1. 打开任务计划程序
  2. 创建基本任务
  3. 设置触发器(如每天上午9点)
  4. 设置操作:启动程序 python,参数 news_scraper.py,起始于脚本目录

Linux/Mac (crontab):

# 每天晚上9点执行 0 21 * * * cd /path/to/script && python3 news_scraper.py

日志文件

脚本运行时会生成 news_scraper.log 日志文件,记录详细的运行状态和错误信息。

文件结构

ecustnews/ ├── news_scraper.py # 主脚本 ├── config.json # 主配置文件 ├── emails.json # 收件人列表 ├── requirements.txt # 依赖包 ├── README.md # 说明文档 ├── news_scraper.log # 日志文件(运行后生成) ├── news.json # 抓取的新闻数据(运行后生成) └── examples/ ├── config.example.json # 配置文件示例 └── emails.example.json # 收件人配置示例

常见问题

1. 邮件发送失败

  • 检查SMTP配置是否正确
  • 确认邮箱密码/授权码是否正确
  • 检查网络连接

2. 抓取失败

  • 检查网络连接
  • 网站结构可能发生变化,需要更新解析代码
  • 启用错误通知功能获取详细错误信息

3. 代理配置问题

  • 确保代理服务器正常运行
  • 检查代理URL格式是否正确
  • 如有认证,确保用户名密码正确

技术支持

  • 查看详细的日志文件 news_scraper.log
  • 启用错误邮件通知功能获取错误详情
  • 检查网络连接和代理配置

About

自动抓取并通过邮件推送华东理工大学(ECUST)网站通知

Language
Python78.9%
Markdown14.7%
Batch3.1%
Shell2.7%
Others0.6%