# sfe-digital-platform-node **Repository Path**: dutinahe/sfe-digital-platform-node ## Basic Information - **Project Name**: sfe-digital-platform-node - **Description**: 中外合作办学-node爬虫 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-04-15 - **Last Updated**: 2026-04-30 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # sfe-digital-platform-node 这个项目用于处理中外合作办学机构/项目数据。脚本会读取 `output` 目录下从教育部监管平台抓取出的 Excel,结合学校官网、招生网、人工配置的官方 URL 或手动 HTML 内容,调用阿里云百炼模型抽取结构化字段,并输出到 `resExcel` 目录下的 `百炼抽取结果.xlsx`。 主要用途: - 从 `output/<地区>/<分类>/*.xlsx` 读取审批数据。 - 搜索并抓取学校官网、招生简章、项目介绍、历年分数等网页。 - 对被站点防护拦截的页面,支持在 `bailianSearchExtractor.js` 中配置手动 URL 或手动 HTML 兜底。 - 调用百炼模型抽取基础信息、专业信息、录取分数、毕业生质量和数据来源。 - 结果按地区和分类写入 `resExcel/<地区>/<分类>/百炼抽取结果.xlsx`。 ## 安装依赖 ```bash npm install ``` 项目依赖 Playwright、xlsx 等包。首次运行如果 Playwright 浏览器缺失,需要按 Playwright 提示安装浏览器。 ## bailian:extract 命令 推荐通过 npm script 调用: ```bash npm run bailian:extract -- [参数] ``` 常用参数: - `--area 北京`:只处理指定地区,例如 `output/北京`。 - `--onlyProjects`:只处理“项目”类数据。 - `--name 关键词`:只处理项目/机构名称中包含该关键词的记录。 - `--limit 10`:限制本次最多处理 10 条。 - `--random`:随机抽样处理,通常配合 `--limit` 使用。 - `--force`:已有结果也强制重跑;不加时已存在结果会跳过。 - `--excel <路径>`:指定单个来源 Excel。 - `--outputRoot <路径>`:指定输入根目录,默认是项目根目录下的 `output`。 - `--analyzeOnly`:只统计学校分布,不执行抽取。 示例: ```bash # 跑北京全部数据 npm run bailian:extract -- --area 北京 # 只跑北京项目类数据 npm run bailian:extract -- --area 北京 --onlyProjects # 先抽样跑 10 条北京项目 npm run bailian:extract -- --area 北京 --onlyProjects --limit 10 # 强制重跑某一个项目 npm run bailian:extract -- --onlyProjects --force --name "北京邮电大学与英国伦敦玛丽女王大学" # 指定单个 Excel npm run bailian:extract -- --excel output/北京/中外合作办学项目/中外合作办学项目.xlsx # 只看统计 npm run bailian:extract -- --analyzeOnly ``` ## 直接调用脚本 `bailian:extract` 本质上等价于: ```bash node bailianSearchExtractor.js [参数] ``` 例如: ```bash node bailianSearchExtractor.js --area 北京 --onlyProjects --limit 10 node bailianSearchExtractor.js --onlyProjects --force --name "中央财经大学与澳大利亚维多利亚大学" ``` ## bailianSearchExtractor.js 说明 这个脚本的核心流程: 1. 从来源 Excel 读取 `maincontent内容`、`detailUrl`、地区、分类等字段。 2. 解析项目名称、中方学校、外方学校、批准书编号、专业、学制、招生人数等审批信息。 3. 优先使用 `MANUAL_OFFICIAL_SOURCE_URLS` 中的人工官方来源。 4. 如果官网请求被拦截或正文为空,尝试使用手动 HTML 兜底内容。 5. 未命中人工来源时,使用搜索引擎查找候选页面。 6. 访问候选页面并按相关性选择最佳来源。 7. 调用百炼模型抽取结构化 JSON。 8. 保存到 `resExcel/<地区>/<分类>/百炼抽取结果.xlsx`。 输出 Excel 包含: - `基础信息` - `专业信息` - `录取分数` - `毕业生质量` - `数据来源` 其中 `基础信息` 会原样保留来源 Excel 的 `detailUrl` 和 `maincontent内容`。 ## 人工来源和 HTML 兜底 在 `bailianSearchExtractor.js` 顶部附近可以配置: - `MANUAL_OFFICIAL_SOURCE_URLS.projects/institutions/schools/approvalNumbers/rules`:为项目、机构、学校、批准书编号配置官方 URL。 - `MANUAL_HTML_SOURCE_CONTENTS.urls` 或 `MANUAL_OFFICIAL_SOURCE_URLS.urls`:按 URL 配置手动复制的 HTML 兜底内容;这里的 `urls` 不会作为所有项目的全局候选来源。 示例: ```js const MANUAL_OFFICIAL_SOURCE_URLS = { projects: { '某项目名称': [ 'https://example.edu.cn/project.htm' ] }, schools: {}, approvalNumbers: {}, rules: [] }; const MANUAL_HTML_SOURCE_CONTENTS = { urls: { 'https://example.edu.cn/detail.htm': '
手动复制的网页 HTML
' }, projects: {}, institutions: {}, schools: {}, approvalNumbers: {} }; ``` ## 缓存 `resExcel/partnerIntroCache.json` 用于缓存“中方办学者介绍”和“外方办学者介绍”。脚本会优先复用已缓存的学校介绍,减少重复调用百炼和 token 消耗。 ## 注意事项 - 脚本会访问公网网页并调用百炼接口,运行时需要可用网络。 - 已有结果默认跳过;调试或覆盖更新时使用 `--force`。 - 对被防护的网站,单纯复制 Cookie 不一定有效,建议使用手动 HTML 兜底。 - `API_KEY`、`BAILIAN_BASE_URL`、模型名等配置在脚本顶部,运行前确认可用。