课程进度 19% · 第2/6章第2/6章 · 标签 1/8
— 1 —
先约定采集范围
课程搜索的数据可以来自自家数据库、公开接口或获准采集的网页。优先使用结构化接口,能减少页面布局变化带来的故障。网页采集的目标是生成稳定、可追踪的课程记录,而不是抓取尽可能多的链接。本章以本站公开课程为范围,不访问登录后的私人内容。
例如本站课程的主键可以直接来自内容库,外部文档则需要来源地址与抓取策略。先用十篇固定样本验证标题、正文和删除语义,再扩到更多链接;否则数量扩大后,重复导航和错误页也会一起被放大。
— 2 —
设计采集流水线
把发现链接、调度、下载、正文提取、去重和入库拆开。每条记录保留原始 URL、业务主键、内容摘要、抓取时间和来源版本,出错时才能定位。下载成功也不代表正文有效:登录页、验证码页和错误提示可能返回正常状态码。
每阶段输出都应可检查。下载器保存响应状态,提取器报告正文是否为空,去重器标记重复依据,写入器记录业务ID与版本。这样一篇文章丢失时,能确认是没下载到、提取失败,还是被错误去重。
- 发现:从课程目录或站点地图获取种子链接。
- 下载:设置超时、大小上限与每站点并发限制。
- 提取:优先选择正文容器,移除导航和广告。
- 入库:按稳定主键更新,记录失败原因。