# score-line-analysis **Repository Path**: LiTaoPython/score-line-analysis ## Basic Information - **Project Name**: score-line-analysis - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-03-29 - **Last Updated**: 2025-04-22 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 高校分数线分析系统 本系统是一个用于采集、分析和可视化研究生考试分数线数据的综合平台,帮助考生了解历年院校分数线情况,辅助考生选择适合的目标院校和专业。 ## 系统架构 本系统采用分层架构设计,主要包含以下几个模块: 1. **数据采集模块(DataCollector)** - 负责从各大高校招生网站获取原始数据 2. **数据处理模块** - 对原始数据进行清洗、转换和结构化 3. **数据存储模块** - 管理数据库连接和数据持久化 4. **数据分析模块** - 进行数据挖掘和统计分析 5. **可视化模块** - 生成图表和报表展示分析结果 6. **控制器模块** - 协调各个模块的工作 ## 项目目录结构 ``` score-line-analysis/ ├── controller/ # 控制器模块 ├── data/ # 数据存储目录 ├── db/ # 数据库脚本 ├── db_manager/ # 数据库管理模块 ├── docs/ # 文档 ├── entity/ # 实体定义 ├── mapper/ # 数据访问层 ├── service/ # 服务层 │ └── data_collector.py # 数据采集服务 ├── visualization/ # 可视化模块 ├── config.py # 配置文件 ├── main.py # 主程序入口 └── requirements.txt # 依赖库 ``` ## 功能特性 ### 1. 数据采集功能 系统支持采集以下几类数据: - **院校信息(University)** - 包括院校名称、层次、类型、地理位置等基本信息 - **专业信息(Major)** - 包括专业代码、名称、类别等 - **分数线信息(Score)** - 历年考研分数线数据 - **招生计划(AdmissionPlan)** - 包括招生人数、考试科目等 ### 2. 原始数据存储与处理 系统会将采集到的原始数据存储到`raw_data`表中,具有以下特点: - 保存完整的原始JSON数据,不丢失任何信息 - 记录数据来源URL和采集时间 - 支持不同类型数据的存储(university, major, score, admission_plan) - 通过processed和status字段跟踪数据处理状态 ### 3. 原始数据与结构化数据关联 系统通过raw_data_id字段将结构化数据与原始数据关联起来,具有以下优势: - **数据追溯** - 可以随时查看结构化数据对应的原始数据,方便追溯和验证 - **版本控制** - 当同一数据有多个版本时,可以通过原始数据ID区分不同版本 - **数据质量保证** - 可以检查数据处理过程是否正确,提高数据质量 - **错误修复** - 当发现结构化数据有误时,可以回溯到原始数据重新处理 ### 4. 数据分析与可视化 系统提供以下分析功能: - 院校分数线趋势分析 - 专业热度分析 - 地区分布分析 - 院校对比分析 ## 如何使用 ### 安装依赖 ```bash pip install -r requirements.txt ``` ### 数据采集 采集院校信息: ```bash python main.py --type university --limit 10 ``` 采集专业信息: ```bash python main.py --type major --category 计算机 ``` 采集分数线信息: ```bash python main.py --type score --year 2022 --major 计算机科学与技术 ``` 采集所有数据: ```bash python main.py --type all ``` ### 处理原始数据 处理全部原始数据: ```bash python main.py --process-raw ``` 处理指定类型的原始数据: ```bash python main.py --process-raw --type score ``` 处理指定数量的原始数据: ```bash python main.py --process-raw --limit 100 ``` 运行可视化网站 ```bash streamlit run app.py ``` ### 参数说明 - `--type`: 采集数据类型,可选值:university(院校)、major(专业)、score(分数线)、admission_plan(招生计划)、all(全部) - `--year`: 指定年份,如2022 - `--major`: 指定专业名称,如计算机科学与技术 - `--category`: 指定专业类别,如计算机 - `--location`: 指定地区,如北京 - `--limit`: 限制采集数量,默认为0表示不限制 - `--log-level`: 日志级别,可选值:debug、info、warning、error、critical - `--save`: 是否保存到数据库 - `--process-raw`: 处理原始数据标志 ## 数据库结构 ### raw_data表 用于存储爬取的原始数据,表结构如下: | 字段名 | 类型 | 说明 | |-------|------|------| | id | INT | 自增主键 | | data_type | VARCHAR(50) | 数据类型:university, major, score, admission_plan | | url | VARCHAR(255) | 数据来源URL | | content | LONGTEXT | 原始数据内容(JSON格式) | | source | VARCHAR(100) | 数据来源 | | crawl_time | TIMESTAMP | 爬取时间 | | processed | TINYINT(1) | 是否已处理 | | status | VARCHAR(20) | 处理状态:pending, processing, completed, failed | ### 结构化数据表 所有的结构化数据表(如`admission_plan`, `historical_score`, `exam_subject`等)都包含`raw_data_id`字段,用于关联对应的原始数据记录。 ## 注意事项 1. 数据采集过程中需遵守网站的robots协议 2. 采集频率设置了延迟,避免对目标网站造成过大压力 3. 首次运行时会自动创建数据库表结构 4. 处理原始数据前确保对应的结构化数据表已经创建