Skip to content

About

院校专业观测镜 | 大专院校专业分布,招生人数等数据分析系统。开发于2025年中。

Resources

Stars

3 stars

Watchers

0 watching

Forks

Latest commit

 

History

4 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 

Repository files navigation

MajorScope

院校专业数据情报平台 —— 从全国院校中,精准透视数字创意类专业的开设与招生全景。

Python FastAPI Playwright Storage Version

MajorScope 是一站式院校招生情报分析平台:自动汇聚全国本科、高职、大专、中专院校中 9 大数字创意类专业 的开设情况、学校档案、历年招生计划与官方联系方式,通过可视化 Web 控制台呈现,并一键导出结构化 Excel / CSV 报表。

告别逐校翻官网、逐省查招生计划的重复劳动——把「哪些学校开了这个专业、公办还是民办、每年招多少人、怎么联系」这件事,交给 MajorScope 一次搞定。


目录


为什么是 MajorScope

数字创意产业高速扩张,数字媒体、虚拟现实、动画、视觉传达等专业几乎成为每所院校的"标配",但真实情报高度分散:

  • 专业开设情况散落在教育部备案平台与各省招考系统;
  • 公办民办、本科专科的区分需要多源交叉核实;
  • 历届招生人数需要逐省、逐校、逐年人工汇总;
  • 招生办联系方式藏在每个学校官网的角落里。

MajorScope 把这一切自动化:多源汇聚 → 交叉清洗 → 智能分类 → 可视化分析 → 一键交付。

适用场景

角色 典型用途
教育咨询 / 艺考规划机构 快速生成目标专业的全国院校清单与招生规模对比
高校招生 / 就业部门 掌握同类院校同专业的开设与招生情况
市场研究 / 行业分析 数字创意类专业供给侧的省域分布、公办民办结构分析
考生与家长 了解某专业的开设院校层次、招生规模与联系方式

Screenshot

以下截图来自真实运行环境(Web 控制台,深色主题)。

仪表盘
仪表盘
数据浏览 · 学校列表
数据浏览 · 学校列表
数据浏览 · 专业记录
数据浏览 · 专业记录
学校详情页
学校详情页
  • 仪表盘:数据总量、近四届招生人数、省份地图与 TOP 榜、学校类别分布、数据来源分布、主专业归类 TOP 10;
  • 数据浏览 · 学校列表:按省份/城市/类别筛选学校,一览 2026 届招生规模与官方联系电话;
  • 数据浏览 · 专业记录:多维筛选(省份、归类、数据来源、届次、关键字模糊匹配),勾选后一键导出所选 Excel,支持分页浏览全量记录;
  • 学校详情页:校档案、官网与招生页面、近四届招生人数、专业列表(含专业代码、二级学院、专业联系方式)。

核心特性

全量院校档案

覆盖全国约 3000 所 本科与专科院校,包含办学层次、学校类型、办学性质(公办/民办)、主管部门、985/211/双一流/双高计划标签、官网、邮箱与地址。

垂直专业聚焦

围绕 9 大数字创意类专业 及其关键词变体做精准匹配,自动将「数字媒体技术」「游戏艺术设计」等变体专业归类到主专业,避免漏抓与误抓。

全国招生计划汇总

以专业粒度汇聚目标院校在全国 31 个招生省份、2023–2026 四届的招生计划人数,自动跳过无招生计划的省份,省域覆盖完整、数据可信。

智能学校分类

基于权威学校档案自动推断 11 类学校类别(公办/民办 × 大专/高职/职业本科/一本/二本/三本 + 中专),支持一键重算存量数据。

可视化 Web 控制台

深色主题单页应用:仪表盘、任务控制、实时日志、数据浏览四大模块,WebSocket 实时推送采集进度,支持搜索、筛选、钻取与单校手动补采。

一键交付

结构化导出 21 列 Excel / CSV 报表,开箱即用,直接进入后续分析流程。


数据全景

九大目标专业

主专业 覆盖关键词变体(节选)
数字媒体 数字媒体、融媒体、全媒体
数字媒体技术 数字媒体技术
数字媒体艺术 数字媒体艺术、游戏艺术设计
虚拟现实 虚拟现实技术、虚拟现实技术应用、虚拟现实应用技术
艺术与科技 艺术与科技
影视 影视摄影与制作、影视编导、影视多媒体技术、影视动画、广播影视
动画 动画、动漫
环境设计 环境设计、环境艺术设计
视觉传达 视觉传达、视觉传达设计

学校类别体系

类别 说明
中专 中等专业学校
公办大专 / 民办大专 高等专科学校
公办高职 / 民办高职 高等职业技术学院
职业本科(公办)/ 职业本科(民办) 职业技术大学 / 职业大学,已升本,本专兼有
一本 985 / 211 本科院校
二本 公办普通本科
三本 民办本科(含独立学院、中外合作)

类别判定以权威学校档案的办学层次、办学性质与标签为准,校名后缀与专业学历层次仅作兜底;存量数据可随时通过 --reclassify 一键重算。


数据采集流程

MajorScope 采用五步流水线,每一步独立可执行、独立断点续传:

flowchart LR
    A["Step 1<br/>全国学校名单与档案<br/>掌上高考公开接口"] --> B["Step 2<br/>专业备案数据<br/>教育部职业院校平台"]
    B --> C["Step 3<br/>目标学校官网采集<br/>招生联系信息"]
    C --> D["Step 4<br/>招生计划人数<br/>全国 31 省 × 2023–2026"]
    D --> E["Step 5<br/>二级学院名单<br/>官网组织机构页"]
    E --> F["SQLite 汇聚去重"]
    F --> G["Excel / CSV 导出<br/>Web 控制台分析"]
Loading
步骤 内容 数据来源
Step 1 全国高校名单与学校档案(约 3000 所) 掌上高考公开接口
Step 2 目标专业在全国中职/高职/大专院校的备案记录 教育部职业院校专业备案平台
Step 3 目标学校的官网招生栏目:招生办电话、联系人、专业计划页 各校官网(智能页面定位)
Step 4 目标学校各专业在全国 31 个招生省份的招生计划人数(2023–2026) 掌上高考招生计划接口
Step 5 二级学院名单(低频串行采集,不打扰目标站点) 各校官网组织机构页

Web 控制台

内置基于 FastAPI 的本地 Web 控制台(默认 http://127.0.0.1:8001),无需任何前端构建,开箱即用:

模块 能力
仪表盘 数据总量统计、五步状态一览、任务运行状态、省份分布地图、分类与专业聚合分析
任务控制 全流程或单步启停、强制重跑、步骤状态重置、无头/有头浏览器模式切换
实时日志 WebSocket 实时推送采集日志与进度,任务卡顿一目了然
数据浏览 关键字搜索、省份/类别/专业/数据来源筛选、钻取下钻、学校详情页、单校手动补采

快速开始

环境要求

  • 操作系统:Windows 10/11(推荐);macOS / Linux 可通过命令行使用
  • Python:3.10 及以上(无需预装,启动脚本可自动引导安装)

Windows 一键启动

脚本 用途
run.bat 启动命令行工作台(含交互菜单:全流程、分步执行、导出、摘要、清库等 10 项)
run_web.bat 启动 Web 控制台,浏览器访问 http://127.0.0.1:8001
setup.bat 环境引导(被上述脚本自动调用,也可手动执行)

首次运行会自动完成环境准备:检测/安装 Python → 创建虚拟环境 .venv → 安装依赖(国内镜像优先,失败自动回退官方源)→ 下载 Playwright Chromium(国内镜像加速)。全程无需手动操作。

命令行使用

# 全流程采集
python main.py --all

# 分步执行
python main.py --step 1   # 全国学校名单与档案
python main.py --step 2   # 专业备案数据
python main.py --step 3   # 目标学校官网采集
python main.py --step 4   # 招生计划人数
python main.py --step 5   # 二级学院名单

# 数据交付与维护
python main.py --export       # 导出 Excel / CSV
python main.py --summary      # 查看数据摘要报告
python main.py --reclassify   # 重算学校类别(幂等,可随时执行)
python main.py --clear        # 清空数据库重新开始

# 调试
python main.py --all --visible   # 可见浏览器模式,便于观察采集过程

手动安装依赖(可选):pip install -r requirements.txt,随后执行 playwright install chromium。


数据输出

导出文件位于 output/ 目录,命名格式 college_major_data_YYYYMMDD_HHMMSS.xlsx,共 21 列:

分组 字段
基本信息 省份、城市、学校名称、学校类别、学校官网 URL
学校联系 学校就业指导联系人/办公室联系人、学校联系电话
专业信息 二级学院、专业名称、主专业归类、专业代码、专业联系人、专业联系电话
招生规模 2023 届人数、2024 届人数、2025 届人数、2026 届人数
元数据 院校隶属、学历层次、数据来源、抓取时间

项目结构

MajorScope/                      # 仓库目录(工程代号 college_spider)
├── main.py                      # 主入口:五步流程编排 + CLI
├── run.bat                      # 命令行工作台一键启动(交互菜单)
├── run_web.bat                  # Web 控制台一键启动
├── run_web.py                   # Web 服务入口(支持自定义端口)
├── setup.bat / setup.py         # 环境自动引导(建 venv、装依赖、装浏览器)
├── requirements.txt             # 依赖清单
├── config/
│   ├── settings.py              # 全局配置:并发、限速、重试、数据源、输出
│   └── majors.py                # 9 大目标专业定义与关键词变体匹配
├── models/
│   └── schemas.py               # Pydantic 数据模型(学校档案、专业记录等)
├── scrapers/
│   ├── base.py                  # 基础采集框架:浏览器生命周期、重试、反爬延迟
│   ├── eol_schools.py           # 全国高校名单与学校档案(掌上高考)
│   ├── moe_vocational.py        # 专业备案数据(教育部职业院校平台)
│   ├── eol_plans.py             # 招生计划人数(全国 31 省 × 四届)
│   └── school_website.py        # 学校官网采集(联系方式、招生计划页、二级学院)
├── storage/
│   ├── database.py              # SQLite 存储:去重、状态追踪、断点续传
│   └── exporter.py              # Excel / CSV 导出与摘要报告
├── utils/
│   ├── events.py                # 全局事件总线:进度上报、取消机制
│   ├── helpers.py               # 中文模糊匹配、电话提取、学校类别推断
│   └── logger.py                # loguru 日志配置(轮转与保留策略)
├── webapp/
│   ├── server.py                # FastAPI 应用:REST API + WebSocket 实时推送
│   ├── task_manager.py          # 单例任务管理器(后台线程运行采集任务)
│   └── static/index.html        # 深色主题单页前端(四大模块)
├── data/                        # SQLite 数据库文件
├── output/                      # 导出报表
└── logs/                        # 运行日志(按日归档)

技术栈

领域 技术 说明
语言 / 并发 Python 3.10+ · asyncio 全异步采集流水线
浏览器自动化 Playwright (Chromium) 官网页面采集、智能导航
HTTP 客户端 httpx 公开数据接口调用
页面解析 BeautifulSoup4 + lxml 官网内容提取
数据处理 pandas + openpyxl Excel / CSV 生成
数据存储 SQLite (WAL) 暂存、去重、断点续传
数据校验 Pydantic 全链路数据结构校验
Web 服务 FastAPI + Uvicorn + WebSocket REST API 与实时推送
日志 loguru 分级日志、自动轮转

可靠性设计

面向真实网络环境的工程化细节:

  • 断点续传:每步完成状态落库,中断重启后自动跳过已完成部分,长任务随时可续;
  • 智能限速:请求间隔带随机抖动,针对风控严格的数据源采用「宁慢勿封」策略,触发限流后按 30/45/60 分钟阶梯退避;
  • 自动重试:失败重试 + 指数退避,瞬时网络抖动不中断任务;
  • 随时可停:事件总线驱动的协作式取消机制,任务可在下一个检查点安全退出,不留半成品数据;
  • 去重保证:「学校名称 + 专业名称」联合唯一键,多源数据合并不重复;
  • 超时熔断:单校整体超时强制放弃,个别站点异常不阻塞全流程;
  • 数据可溯:每条记录标注数据来源与抓取时间,便于核对与审计。

合规声明

  • MajorScope 仅访问公开可访问的数据接口与公开网页,未采取任何登录绕过或验证码破解手段;
  • 内置的限速与退避机制旨在尊重目标站点的服务能力,请勿擅自调低间隔;
  • 采集的数据仅建议用于教育研究、市场分析与个人参考,请勿用于商业转售或其他违法违规用途;
  • 请使用者遵守目标网站的服务条款、robots.txt 约定及所在地法律法规,因不当使用产生的后果由使用者自行承担。

常见问题

Q1:某些学校的联系方式或招生人数为空? 官网结构千差万别,官网采集环节采用"尽力而为"策略,失败的字段留空而不阻塞整体流程。可在 Web 控制台的数据浏览页对该校发起单校手动补采。

Q2:全流程需要多久? 取决于目标学校数量与官网响应速度。得益于断点续传,可随时中断、随时续跑,无需一次性完成。

Q3:如何只采集部分省份的招生计划? 编辑 config/settings.py 中的 EOL_PLAN_PROVINCE_IDS,裁剪为所需省份的行政区划代码即可显著缩短 Step 4 耗时。

Q4:如何扩展或替换目标专业? 编辑 config/majors.py 中的 TARGET_MAJORS,为主专业补充关键词变体即可;改动后重新执行 Step 2 与 Step 4 生效。

Q5:数据可以输出为 CSV 吗? 可以。--export 会同时生成 Excel 与 CSV(UTF-8 with BOM,Excel 打开不乱码)。


关于命名

MajorScope = Major(专业)+ Scope(视界 / 观测范围),寓意「以专业为镜,纵览全国院校」。

仓库目录沿用的 college_spider 为内部工程代号,仅出现在代码路径与数据库文件名中,不影响对外展示。


许可证

本项目暂未指定开源许可证。对外发布前请明确授权方式(开源协议或闭源授权),并在仓库中添加对应的 LICENSE 文件。

About

院校专业观测镜 | 大专院校专业分布,招生人数等数据分析系统。开发于2025年中。

Resources

Stars

3 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors