https://github.com/cold-bin/jwzx-mail
use golang to construct cqupt-jwzx crawler application
https://github.com/cold-bin/jwzx-mail
crawler golang
Last synced: 15 days ago
JSON representation
use golang to construct cqupt-jwzx crawler application
- Host: GitHub
- URL: https://github.com/cold-bin/jwzx-mail
- Owner: cold-bin
- Created: 2022-09-17T04:51:47.000Z (almost 4 years ago)
- Default Branch: master
- Last Pushed: 2022-09-23T09:38:34.000Z (over 3 years ago)
- Last Synced: 2025-01-11T00:12:45.606Z (over 1 year ago)
- Topics: crawler, golang
- Language: Go
- Homepage:
- Size: 22.5 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
## 👏`jwzx-mail`
简易的爬虫工具,并将爬取的数据主动推送到QQ邮箱
### 🚀 设计思路
本工具分为两个部分:
- mail service: 邮件服务。该服务主动推送教务在线最新消息的邮件,支持正文和附件下载。主动推送,采用轮询方式刷新数据,发现拿到了新数据,就推送。(轮询采用linux定时任务脚本实现,定时请求爬虫)
- jwzx clawer service: 爬虫服务。该服务需要爬取教务在线的公告消息栏,并且最好记住一个爬取最新消息的一个时间及fileId。这样下次轮询爬取的时候,
如果发现教务在线第一条最新消息时间及id没有发生变化,那么就不需要触发邮件发送
### ⚙ 项目结构
```
.
|-- cmd
|-- conf # 提供配置文件
|-- logic
|-- mail # 邮件组装、发送服务
|-- model
|-- scripts # 定时任务
`-- util
```
- `conf`目录
该目录下提供了配置文件,允许本工具使用者自定义,方便自己使用
```json
{
"http_time_out": 10000000000,
"latest_file_id": 10488,
"send_mail_pool_get": 4,
"send_mail_to_qqs": [
"cold-bin@qq.com"
],
"qq_mail_auth_code": "owkhanycacyrdabi",
"send_mail_server_qq": "cold-bin@qq.com",
"send_mail_server_host": "smtp.qq.com",
"send_mail_server_addr": "smtp.qq.com:25",
"send_mail_from": "教务在线发布新通知 \u003ccold-bin@qq.com\u003e",
"send_mail_title_prefix": "教务在线 | "
}
```
以上json配置代表如下含义:
| 配置选项 | 用途 | 类型 | 备注 |
| ------------------------ | ------------------------------------------- | -------- | ------------------------------------------------------------ |
| `http_time_out` | http请求客户端的超时时间,配置文件给的是10s | number | 以ns为单位 |
| `latest_file_id` | 最新的fileId | number | 为保证项目正常运行,最好先访问jwzx接口,获取以下当前时间下,最新的fileId,避免返回过多文件 |
| `send_mail_pool_get` | 邮件服务端连接池的大小 | number | |
| `send_mail_to_qqs` | 发送邮箱列表 | []string | |
| `qq_mail_auth_code` | 邮箱服务端的授权码 | string | 这里使用的是QQ授权码 |
| `send_mail_server_qq` | 邮箱服务端的QQ | string | |
| `send_mail_server_host` | 邮箱服务的主机 | string | |
| `send_mail_server_addr` | 邮箱服务的地址 | string | |
| `send_mail_from` | 邮件发送者 | string | |
| `send_mail_title_prefix` | 邮件主题的前缀 | string | |
- `scripts`目录
下面的脚本,也可以依据自己定制
### 🎈 Tip
由于没有做jwzx的认证,所以,本项目需要部署到内网环境。