项目案例

断点续传数据采集器

需要一次性获取自 2019 年起逐周积累的 5 年数据。请求过于集中时,响应会在中途中断,当天只能采集到一半;我们从中断处续接,补齐了全部区间。

采集区间

之前

中途停止

之后

2019–2024 全区间

交付的采集程序运行界面。可选择按日或按周采集,并指定起始周和结束周;右侧显示进度条和预计剩余时间。
从 2019 年第 1 周(2018 年 12 月 30 日起)到 2024 年第 30 周,按周分段采集。界面显示剩余时间,当前进度一目了然。

为保护客户信息,画面以模拟数据重新构建了相同功能。

客户
委托研究用途采集的国内客户
行业
研究·学术
实施年份
2025
周期
交付后持续跟进中
领域
业务自动化
  • 大规模采集管道
  • 请求间隔控制
  • 断点续传
  • 剩余时间显示

背景

需要获取的数据已积累了 5 年多,是从 2019 年第一周到 2024 年 7 月逐周留存的记录。数据量无法一次取完,而且一旦中途停止,就得先查清已经获取到哪里。项目有时间节点,进度安排十分关键。

现场所见

问题不在采集工具,而在于请求的发送方式。以远超正常浏览速度的频率集中发送请求,响应就会在中途中断,当天只能采集到一半。

问题所在

我们把目标从“快速获取”调整为“完整获取”。与其只取一半就停下,不如多花些时间取全所有区间。数据一旦有缺口,最终还得重新获取。

这一判断的前提是确认采集对象的使用条款和 robots 协议。如果不先确定哪些数据可以获取,后续设计便无从谈起。

解决方案

  • 请求间隔与重试控制 —— 分批发送请求,避免集中访问。这样 5 年的数据才能完整获取,中间不留空缺
  • 按周分段获取 —— 不把 5 年多的区间作为一个整体处理,而是按周拆分。即使某一周失败,也只需重新获取该周
  • 断点续传 —— 记录中断位置。无需从头开始,长时间的采集才能顺利完成
  • 剩余时间显示 —— 在界面上显示进度和预计剩余时间。耗时数小时的任务如果没有任何提示,操作人员很可能中途放弃

结果

从 2019 年第 1 周到 2024 年第 30 周,全部区间无一遗漏地获取完毕。 此后,同一架构也已用于其他采集项目。