- 自动从华东理工大学新闻网站、学生处、教务处和研究生院网站抓取近期通知
- 支持多个收件人邮箱配置和分类订阅
- 生成美观的HTML邮件格式
- 完整的日志记录功能
- 智能日期解析和链接处理
- 新增:智能代理使用模式(始终使用代理 或 失败时使用代理)
- 新增:错误邮件通知功能(可选启用)
pip install -r requirements.txt复制并修改 examples/config.example.json 为 config.json:
{
"smtp": {
"server": "smtp.qq.com",
"port": 587,
"username": "[email protected]",
"password": "your_app_password",
"sender_email": "[email protected]"
},
"days": 0,
"proxy": {
"enabled": false,
"always_use": false,
"url": "http://127.0.0.1:7890",
"username": "",
"password": ""
},
"error_notification": {
"enabled": false,
"recipients": ["[email protected]"]
}
}配置说明:
smtp: SMTP邮件服务器配置days: 抓取多少天内的通知,默认为0天proxy: 代理配置(可选)enabled: 是否启用代理配置always_use: 是否始终使用代理(false=失败时使用代理)url: 代理服务器地址
error_notification: 错误邮件通知配置
复制并修改 examples/emails.example.json 为 emails.json:
[
{
"name": "张三",
"email": "[email protected]",
"categories": ["jwc", "news"]
},
{
"name": "李四",
"email": "[email protected]",
"categories": ["student", "gschool"]
}
]分类说明:
jwc: 教务处通知news: 学校新闻网通知student: 学生处通知gschool: 研究生院通知- 不设置分类或空数组:接收所有通知
-
两种代理使用模式:
- 始终使用代理:配置
always_use: true时,始终通过代理访问 - 失败时使用代理:配置
always_use: false时,先尝试直连,失败后自动启用代理重试
- 始终使用代理:配置
-
自动重试机制:
- 请求失败时自动重试(最大2次)
- 第一次失败时如果配置了代理但未使用,会自动启用代理重试
- 第二次重试使用代理进行请求
- 内置代理连接测试功能
- 可选启用错误邮件通知功能
- 支持配置多个错误通知收件人
- 错误邮件包含详细错误信息和代理状态
- 在以下情况发送错误通知:
- 代理连接测试失败
- 所有网站抓取失败
- 部分网站抓取失败但仍获取到数据
- 程序执行过程中发生未预期错误
python news_scraper.py可以使用系统的定时任务功能:
Windows (任务计划程序):
- 打开任务计划程序
- 创建基本任务
- 设置触发器(如每天上午9点)
- 设置操作:启动程序
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 # 收件人配置示例
- 检查SMTP配置是否正确
- 确认邮箱密码/授权码是否正确
- 检查网络连接
- 检查网络连接
- 网站结构可能发生变化,需要更新解析代码
- 启用错误通知功能获取详细错误信息
- 确保代理服务器正常运行
- 检查代理URL格式是否正确
- 如有认证,确保用户名密码正确
- 查看详细的日志文件
news_scraper.log - 启用错误邮件通知功能获取错误详情
- 检查网络连接和代理配置