外观
Scrapy 任务中断、重复抓取或解析失败后,怎样恢复数据链路?
标准回答
把抓取、解析、清洗和入库分成可观察的阶段,保留足以重试和定位的问题记录。重复执行应尽量得到相同业务结果;解析异常不能悄悄入库成空题目。恢复时要知道任务在哪里中断、哪些记录已经成功。
通俗例子
任务在一批数据写入一半后中断,重新执行若使用稳定业务标识更新已写记录,就比无条件追加更不易重复;但标识生成规则必须能区分真正不同的题。
深入解释
**区分失败类型:**网络超时、页面结构变化、字段缺失和入库失败,需要不同处理。一直重试格式已经改变的页面通常无效。
**记录进度与失败材料:**根据真实实现保存请求标识、来源、处理状态及必要原始材料,以便重新解析或补跑;不要假定 Scrapy 自动完成全部业务检查点。
**校验入库质量:**题干、选项、答案之间的关系与重复判定需要规则;监控产出数量和异常比例,避免采集程序“正常运行”但实际数据已损坏。
追问与回答
如何控制对数据源的请求压力?
说明实际调度、限速、重试和失败停用策略,并确认数据源允许的访问方式。
上游字段悄悄改了怎么知道?
通过必需字段、数量分布和抽样质量检查发现;按实际监控与告警作答。
易混淆点
爬取成功的 HTTP 状态不代表解析和入库都成功。
进一步举证
- 准备一个真实采集失败及恢复案例。
- 补齐任务调度、检查点、去重和质量校验的实现。
内容来源
- Android · AI Agent 知识手册 · 原条目
resume-R39