125 lines
6.7 KiB
Markdown
125 lines
6.7 KiB
Markdown
# 课题组采集方法(活的方法件)
|
||
|
||
> 这份是**方法论**,不是某一校的报告。任务书从这里引用,**不要再各写一套**。
|
||
> 立此件的起因:用户指出「做事情不可能依次去枚举所有的 URL」—— 对。
|
||
> 我此前把爱丁堡跑出来的**结果**(跟了 117 个子域)写成了**要求**,导致 worker 去 sitemap 拉上万个 URL。
|
||
> **那是蛮力,不是方法。**
|
||
|
||
---
|
||
|
||
## 0. 目标
|
||
|
||
每所学校产出一份「**导师带的组**」清单,五字段:
|
||
`课题组名称` · `所在大学及研究中心` · `研究方向` · `联系邮箱` · `最近五年论文数`(暂 null)
|
||
|
||
---
|
||
|
||
## 1. 方法:**入口发现**(有限),不是 **URL 全量枚举**(几万)
|
||
|
||
### 数量级对照(实测)
|
||
|
||
| 做法 | 入口数 | 例 |
|
||
|---|---|---|
|
||
| ✅ **官方院系导航 → 各院系 `/research/` → 组目录** | **20–60 / 校** | Bristol 216 个入口 URL;Edinburgh 几十个 |
|
||
| ❌ sitemap 全量枚举 | **上万 / 校** | Monash 13,568 个 URL —— 绝大部分是新闻/课程/人员页 |
|
||
|
||
### 步骤
|
||
|
||
1. **找学校官方的院系导航**
|
||
`…/faculties/`、`…/schools-departments/`、`…/about/structure`、`…/colleges-schools-and-departments`
|
||
⇒ 拿到**该校的院系全清单**(通常 10–60 个)。**这就是完备性的分母。**
|
||
|
||
2. **每个院系进它的 `/research`**(或 `/research/`、`/our-research`、`/research-and-innovation`)
|
||
|
||
3. **⭐ 在院系 research 页上找「组目录」** —— 这是整个方法的核心
|
||
识别特征(链接文字 / 页面标题 / 路径):
|
||
- `research-groups` · `research-centres` · `centres` · `groups` · `institutes` · `labs`
|
||
- **最高价值:`每个组由一位 PI 带` 的目录**(表格或多行列表,几十到几百行)
|
||
- 页面原话常写作 **"each led by a Principal Investigator"** / "our research groups"
|
||
- 爱丁堡 Biology 这一个目录 = **140 条**(占全校 643 的近 1/4)
|
||
|
||
4. **目录条目 → 组自己的页面 → 取五字段**
|
||
|
||
5. **子域/外站**:**只在院系站的链接指向它时才跟**(如 `biology.ed.ac.uk`、`bristolmathsresearch.org`)。
|
||
**不是**去 sitemap 里搜子域列表。爱丁堡那 117 个子域是**跟出来的结果**,不是要去枚举的目标。
|
||
|
||
---
|
||
|
||
## 2. 判据:什么算「一个组」
|
||
|
||
> **打开页面像人一样看:这是不是一个「导师带的做研究的团队」?**
|
||
> **粒度上限 = 一个导师能带的规模。**
|
||
|
||
| 收 | 不收 |
|
||
|---|---|
|
||
| `Bristol Cyber Security Group` · `Clark group` | `Intelligent Systems Laboratory`(自述 150+ 人、七个单位的联邦) |
|
||
| `Bristol Glaciology Centre` | 校级研究所(Cabot / Brigstow / Quantum …) |
|
||
| 有具名负责人 + 方向 + 一个导师能带的规模 | Chemistry/Physics 的 `theme`、`cluster` |
|
||
| **大一级下面挂着的内层组** | 只有方向文字 + 一长串人员链接、**无具名负责人**的方向页 |
|
||
|
||
**不是组**:服务设施 · 研讨会系列 · 项目 · 学生培养计划 · 单项研究 · 空页重定向 · 主题页。
|
||
**共性是页面上有一句「非团队自述」—— 你去看那句话。**
|
||
|
||
### 字段取法
|
||
|
||
| 字段 | 取法 |
|
||
|---|---|
|
||
| 课题组名称 | 该组**自己页面**的 H1(无 H1 用 `<title>`;JS 渲染/表格行用**目录里的官方组名**并标 `_name_source`) |
|
||
| 所在大学及研究中心 | 大学 + **真实上级研究单位**;⚠️ 上级是系/院/学部的**不许当研究中心写**,没有真上级就**只写大学** |
|
||
| 研究方向 | 该组页上的方向文字。**没有 ⇒ 不要**(用户裁) |
|
||
| 联系邮箱 | 只接受**本组页 / 本组负责人页**的邮箱;不接受学院总邮箱 |
|
||
| 最近五年论文数 | null(用户裁:先留空) |
|
||
|
||
---
|
||
|
||
## 3. 完备性门槛(**交付门槛,不是"尽量"**)
|
||
|
||
1. **院系台账**:`院系(全部)| research 入口 URL | 状态(取到/取不到+原因) | 组数`
|
||
—— **缺一行就是没做完**;`未取页 = 0`
|
||
2. **合理性校验**:`组数 ÷ 院系数`
|
||
—— 比值**荒谬地低** ⇒ 大概率漏了「组目录」这一层,**回头找目录**(不是去爬更多 URL)
|
||
3. 基准:Bristol ≈5.8/系 · Edinburgh ≈25.7/系(因校而异,只看是否荒谬地低)
|
||
|
||
---
|
||
|
||
## 4. 质量:**抽样验,不逐页核**(用户裁)
|
||
|
||
1. **启发式自动抽**(全量,不逐条判)
|
||
2. **随机抽 30 条**逐条开页面核 → **准确率** + **假阳性类型**
|
||
3. 准确率 **≥90% 且类型集中** ⇒ **定点修那一类,全量直接用**
|
||
⇒ **不要再逐页核**("逐页核 643 条"是迂腐;改成抽样,一个数量级更快)
|
||
4. 省下的时间**全部用来把院系覆盖做全** —— 那才是真正的缺口
|
||
|
||
---
|
||
|
||
## 5. 并行安全(出过事故)
|
||
|
||
5 个 worker 曾**挤在同一个 Space 的同一个 page** 上,297 页跨校串页、整批作废。
|
||
|
||
- **每个 worker 自己新建 TaskSpace**(不要复用别人已有的)
|
||
- **每个 URL 独占 `newPage()`**,**不要共用 p1**
|
||
- **每取一页校验 `page.url()` 与目标一致**;不一致 ⇒ 废掉重取
|
||
- 成功收尾调一次 `await task.finish({ keep: [] })`;**因错误停止就别调**,把 `spaceId` 报上来
|
||
|
||
---
|
||
|
||
## 6. 反面清单(**不要做**)
|
||
|
||
- ❌ 从 sitemap 全量枚举 URL(上万个,绝大部分无关)
|
||
- ❌ 逐页核每一条(用抽样代替)
|
||
- ❌ 在解析器里写死「哪些名字算组」「哪些学校跳过」的名单(判据必须来自源站结构/页面内容)
|
||
- ❌ **把 Pure 当主源或唯一源**(⚠️ 2026-09-24 修正,见下)
|
||
- **已实证**:ANU 的 Pure 最细是 Department,导师个人页的 organisations 只有 1 个行政单位
|
||
⇒ **对 ANU 这类,Pure 里根本没有"组"这一层**,抽出来的全是组织架构
|
||
- **但同样已实证(巴斯)**:有 **11 个组只存在于 Pure**(RaCE / EMaCS / BathCTI / CSCT / CEI /
|
||
CREA / ADBL / MENASP / REVEAL …),**主站 sitemap 里没有任何对应页面**。
|
||
照"不用 Pure"字面执行会漏 11 组(119→108,−9.2%)
|
||
- ⇒ **正确规则(条件式)**:
|
||
**主源是院系站**(`院系导航 → /research/ → 组目录`);
|
||
**Pure 作为补充源** —— 只在**同时满足**时收:① 源站 type ∈ 研究类
|
||
② 页面有具名负责人 ③ 粒度是一个导师能带的规模。
|
||
**既不当主源,也不整个不用。**
|
||
- 判别某校该不该用 Pure 补充:**看它 Pure 的 type facet 里有没有研究类 type**(Bristol/Bath 有;
|
||
ANU/Monash 没有)。没有 ⇒ 该校 Pure 对"组"零贡献。
|
||
- ❌ 用一条绝对规则套所有学校(**每一次"ANU 所以所有学校都这样"的推广,都在巴斯被证伪了**)
|