院校专业数据情报平台 —— 从全国院校中,精准透视数字创意类专业的开设与招生全景。
MajorScope 是一站式院校招生情报分析平台:自动汇聚全国本科、高职、大专、中专院校中 9 大数字创意类专业 的开设情况、学校档案、历年招生计划与官方联系方式,通过可视化 Web 控制台呈现,并一键导出结构化 Excel / CSV 报表。
告别逐校翻官网、逐省查招生计划的重复劳动——把「哪些学校开了这个专业、公办还是民办、每年招多少人、怎么联系」这件事,交给 MajorScope 一次搞定。
数字创意产业高速扩张,数字媒体、虚拟现实、动画、视觉传达等专业几乎成为每所院校的"标配",但真实情报高度分散:
- 专业开设情况散落在教育部备案平台与各省招考系统;
- 公办民办、本科专科的区分需要多源交叉核实;
- 历届招生人数需要逐省、逐校、逐年人工汇总;
- 招生办联系方式藏在每个学校官网的角落里。
MajorScope 把这一切自动化:多源汇聚 → 交叉清洗 → 智能分类 → 可视化分析 → 一键交付。
适用场景
| 角色 | 典型用途 |
|---|---|
| 教育咨询 / 艺考规划机构 | 快速生成目标专业的全国院校清单与招生规模对比 |
| 高校招生 / 就业部门 | 掌握同类院校同专业的开设与招生情况 |
| 市场研究 / 行业分析 | 数字创意类专业供给侧的省域分布、公办民办结构分析 |
| 考生与家长 | 了解某专业的开设院校层次、招生规模与联系方式 |
以下截图来自真实运行环境(Web 控制台,深色主题)。
![]() 仪表盘 |
![]() 数据浏览 · 学校列表 |
![]() 数据浏览 · 专业记录 |
![]() 学校详情页 |
- 仪表盘:数据总量、近四届招生人数、省份地图与 TOP 榜、学校类别分布、数据来源分布、主专业归类 TOP 10;
- 数据浏览 · 学校列表:按省份/城市/类别筛选学校,一览 2026 届招生规模与官方联系电话;
- 数据浏览 · 专业记录:多维筛选(省份、归类、数据来源、届次、关键字模糊匹配),勾选后一键导出所选 Excel,支持分页浏览全量记录;
- 学校详情页:校档案、官网与招生页面、近四届招生人数、专业列表(含专业代码、二级学院、专业联系方式)。
覆盖全国约 3000 所 本科与专科院校,包含办学层次、学校类型、办学性质(公办/民办)、主管部门、985/211/双一流/双高计划标签、官网、邮箱与地址。
围绕 9 大数字创意类专业 及其关键词变体做精准匹配,自动将「数字媒体技术」「游戏艺术设计」等变体专业归类到主专业,避免漏抓与误抓。
以专业粒度汇聚目标院校在全国 31 个招生省份、2023–2026 四届的招生计划人数,自动跳过无招生计划的省份,省域覆盖完整、数据可信。
基于权威学校档案自动推断 11 类学校类别(公办/民办 × 大专/高职/职业本科/一本/二本/三本 + 中专),支持一键重算存量数据。
深色主题单页应用:仪表盘、任务控制、实时日志、数据浏览四大模块,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 控制台分析"]
| 步骤 | 内容 | 数据来源 |
|---|---|---|
| Step 1 | 全国高校名单与学校档案(约 3000 所) | 掌上高考公开接口 |
| Step 2 | 目标专业在全国中职/高职/大专院校的备案记录 | 教育部职业院校专业备案平台 |
| Step 3 | 目标学校的官网招生栏目:招生办电话、联系人、专业计划页 | 各校官网(智能页面定位) |
| Step 4 | 目标学校各专业在全国 31 个招生省份的招生计划人数(2023–2026) | 掌上高考招生计划接口 |
| Step 5 | 二级学院名单(低频串行采集,不打扰目标站点) | 各校官网组织机构页 |
内置基于 FastAPI 的本地 Web 控制台(默认 http://127.0.0.1:8001),无需任何前端构建,开箱即用:
| 模块 | 能力 |
|---|---|
| 仪表盘 | 数据总量统计、五步状态一览、任务运行状态、省份分布地图、分类与专业聚合分析 |
| 任务控制 | 全流程或单步启停、强制重跑、步骤状态重置、无头/有头浏览器模式切换 |
| 实时日志 | WebSocket 实时推送采集日志与进度,任务卡顿一目了然 |
| 数据浏览 | 关键字搜索、省份/类别/专业/数据来源筛选、钻取下钻、学校详情页、单校手动补采 |
- 操作系统:Windows 10/11(推荐);macOS / Linux 可通过命令行使用
- Python:3.10 及以上(无需预装,启动脚本可自动引导安装)
| 脚本 | 用途 |
|---|---|
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 文件。



