学生信息系统 (StudentInfoSystem)介绍
之前写了爬取教务系统的代码,前端不想动了,放在GitHub上谁需要就拿吧。写得非常烂,多包涵,毕竟寒假才开始学😂。
项目概述
学生信息系统是一个基于微服务架构的应用程序,旨在提供学生信息管理的完整解决方案。系统通过爬虫技术从学校教务系统获取数据,并提供统一的API接口供前端或其他系统调用。
本系统采用分布式微服务架构,每个服务负责特定的功能域,通过API网关统一对外提供服务。系统使用JWT进行身份验证和授权,确保数据安全和用户隐私。
系统架构
系统由以下六个主要微服务组成:
1. 认证服务 (AuthService)
负责用户认证和授权管理,是系统安全的核心组件。
主要功能:
用户登录验证
JWT令牌生成与管理
令牌验证与刷新
浏览器自动化登录实现
核心组件:
LoginService
: 处理用户登录请求,生成JWT令牌BrowserManager
: 管理Playwright浏览器实例,实现自动化登录
2. 公共库 (Common)
包含所有服务共享的组件,确保代码复用和一致性。
主要内容:
数据模型 (Models):定义系统中使用的数据结构
中间件 (Middleware):如API安全中间件
过滤器 (Filters):如年份限制过滤器
通用服务 (Services):如登录服务、解析服务等
工具类:提供通用功能
核心组件:
AuthModels
: 定义认证相关的数据模型StudentInfoParser
: 解析学生信息HTMLGradeParser
: 解析成绩信息HTMLScheduleParserService
: 解析课表信息HTML
3. API网关 (Gateway)
作为系统的统一入口,负责请求路由和负载均衡。
主要功能:
请求路由:将请求转发到相应的微服务
API聚合:组合多个服务的结果
跨域资源共享(CORS):处理前端跨域请求
请求限流:防止服务过载
技术实现:
使用YARP作为反向代理
集成JWT认证
配置化路由规则
4. 成绩服务 (GradeService)
负责获取和管理学生成绩信息。
主要功能:
查询学生历史成绩
成绩统计与分析
成绩数据爬取与解析
核心组件:
GradeService
: 处理成绩查询请求GradeParser
: 解析成绩HTML数据
5. 课表服务 (ScheduleService)
负责获取和管理学生课表信息。
主要功能:
查询当前学期课表
按学年学期查询历史课表
课表数据爬取与解析
课表格式化输出
核心组件:
CourseScheduleService
: 处理课表查询请求ScheduleParserService
: 解析课表HTML数据
6. 学生信息服务 (StudentService)
负责获取和管理学生基本信息。
主要功能:
学籍信息查询
个人信息查询
联系方式查询
学生信息爬取与解析
核心组件:
StudentInfoService
: 处理学生信息查询请求StudentInfoCrawlerService
: 爬取学生信息StudentInfoParser
: 解析学生信息HTML数据
技术栈
后端框架: ASP.NET Core 8.0
认证授权: JWT (JSON Web Token)
API文档: Swagger
浏览器自动化: Microsoft Playwright
HTML解析: HtmlAgilityPack
API网关: YARP
日志记录: 内置.NET日志系统
依赖注入: 内置.NET DI容器
HTTP客户端: HttpClient
系统工作流程
- 用户认证流程:
- 用户通过Gateway发送登录请求到AuthService
- AuthService使用Playwright模拟浏览器登录教务系统
- 验证成功后生成JWT令牌返回给用户
- 用户后续请求携带JWT令牌访问其他服务
- 数据获取流程:
- 用户携带JWT令牌请求特定服务(成绩/课表/学生信息)
- 服务验证令牌有效性
- 服务使用Playwright爬虫从教务系统获取数据
- 使用专用解析器解析HTML数据
- 将解析后的数据返回给用户
- 服务间通信:
- 服务之间通过HTTP API进行通信
- 共享数据模型确保数据一致性
- 使用依赖注入管理服务依赖
环境要求
.NET SDK: 8.0
操作系统: Windows/macOS/Linux (支持.NET 8.0的任何系统)
内存: 至少2GB RAM (推荐4GB以上)
存储: 至少1GB可用空间
网络: 稳定的互联网连接
安装与配置
前提条件
- 安装.NET 8.0 SDK
# 检查是否已安装
dotnet --version
安装Playywright
```bash
dotnet tool install --global Microsoft.Playwright.CLI
playwright install
3. 克隆仓库
git clone https://github.com/ExXTong/StudentInfoSystem
cd StudentInfoSystem
### 配置服务
每个服务都有自己的 appsettings.json 配置文件,需要根据实际环境进行配置:
JWT配置
{
"Jwt": {
"Secret": "your_secret_key",
"Expiration": "12:00:00"
}
}
### 构建与运行
#### 构建项目
dotnet restore
dotnet build
#### 运行服务
需要按照依赖顺序启动各个服务,当然需要开多个终端:
1. 启动认证服务
cd StudentInfoSystem.AuthService
dotnet run
2. 启动学生信息服务
cd StudentInfoSystem.StudentService
dotnet run
3. 启动成绩服务
cd StudentInfoSystem.GradeService
dotnet run
4. 启动课表服务
cd StudentInfoSystem.ScheduleService
dotnet run
5. 启动API网关
cd StudentInfoSystem.Gateway
dotnet run
```
API文档
服务启动后,可以通过以下URL访问各服务的Swagger文档: