Crawlee 长任务断点续抓:中断后恢复任务并避免重复写入
长任务中最危险的中断窗口,是数据已经写入、请求却还没被队列确认。重启后请求可能再次执行;如果输出只能追加,就会出现重复记录。反过来,先确认请求再写数据,又可能在中断时永久漏掉记录。 本文以两页图书目录为例,把持久请求队列与 SQLite 主键更新组合起来。正文包含一次明确的中断演示开关,用来说明重放为什么应该安全。示例
Blog
当前标签共有 3 篇文章。
长任务中最危险的中断窗口,是数据已经写入、请求却还没被队列确认。重启后请求可能再次执行;如果输出只能追加,就会出现重复记录。反过来,先确认请求再写数据,又可能在中断时永久漏掉记录。 本文以两页图书目录为例,把持久请求队列与 SQLite 主键更新组合起来。正文包含一次明确的中断演示开关,用来说明重放为什么应该安全。示例
职位列表已经加载完成,抓取器却只拿到一个空容器,是动态页面里常见的情况。解决方法不是对空结果无限重试,而是先确认数据来自响应 HTML 还是 JavaScript 渲染,再选择相应的加载与等待方式。 本文使用 Crawlee Python 的 PlaywrightCrawler,完成两页动态职位列表、三条详情、SQLi
昨天能抓到、今天没抓到,不一定是商品删除。目录发现不完整、详情超时、字段规则失效,都可能让本轮结果少一条。若直接用新结果覆盖旧库,就会把访问问题误写成业务变化。 本文接收采集器输出的目录与详情状态,用 SQLite 维护已知商品,区分新增、修改、暂时失败和待确认删除。它位于抓取之后,不重新介绍网页下载。 明确发现范围与