即使采集在中途中断,也不会从头重新接收
需要一次性取回自2019年以来积累的5年按周记录。如果集中发送请求,响应会在中途断开,当天的采集就会只剩一半;我们从中断处续接,填满了全部区间。
采集区间
以前
中途停止
以后
2019–2024 全区间
背景
需要接收的资料已经积累了5年多。这是从2019年第一周到2024年7月按周留下的记录。不是一次就能取回的体量,而且一旦中途停止,就得先重新确认已经收到哪里。由于进度安排有时间限制,时点很重要。
在现场看到的情况
问题不在采集工具,而在发送请求的方式。如果以与人的阅读速度无关的节奏集中发送请求,响应会在中途断开,当天的采集就会只剩一半。
定义的问题
我们把问题从“快速接收”重新定义为“完整接收到最后”。比起只收一半就停下,即使花更多时间,收全所有区间更有用。有缺失区间的资料终究还是要重新接收。
确认采集对象的服务条款与机器人排除标准,是这一判断的前提。如果不先确定哪些资料可以接收,后面的设计就没有意义。
做出来的东西
- 请求间隔与重试控制 —— 不集中发送,而是分批发送。只有这样,5年的数据才不至于在中途出现缺口,能完整收全
- 按周分段接收 —— 不把超过5年的区间当作一整块处理,而是按周拆分。即使失败,也只需要重新接收那一周
- 从中断点恢复 —— 记住停下的位置。只有不必从头重新接收,长周期采集才能做完
- 剩余时间显示 —— 在画面上显示进度和预计剩余时间。运行耗时数小时的任务时如果没有任何显示,人会中途放弃
结果
从2019年第1周到2024年第30周,完整接收了全部区间,无一遗漏。 之后,同样的结构也用于其他采集项目。
事实出处
韩国专家平台 认证交易评价 (김OO)