抓取要存清洗后的正文而不是整页
更新于 2026-07-24
**抓取类系统应该存「清洗后的正文」,不是「抓到的原始响应」。** 存整页会把一条 17 KB 的正文变成 3.4 MB(约 200 倍),再在数据库、单篇缓存、RSS 文件缓存里各存一份,磁盘会被放大到远超预期。症状与根因
- 现象:服务磁盘很快被占满,之后写入开始静默失败(见 异步补齐长期不生效要查写入失败)。
- 根因两条:
- 保存了完整微信文章页面——包含大量脚本、运行组件、Base64 资源,而这些对阅读正文毫无用处。
- 同一份内容重复保存多份——SQLite、单篇文章缓存、RSS 文件缓存各一份。
正确做法
- 清洗在入库前做:只提取正文(以及必要的元数据/图片引用),原始响应不落库。
- 同一条内容只保留一个真相源,其余(RSS 文件、缓存)按需生成而不是各存一份。
- 修复要连存量一起处理:扩容磁盘恢复写入 → 改抓取逻辑 → 清掉已有的巨大缓存与原始网页数据。
可迁移的判断
- 存储里放的应该是要展示/要用的内容,不是收到的原始字节。
- 抓取器的存储占用要按「单条正文大小 × 条数 × 副本数」估算;副本数是隐藏的乘数。
- 抓取链路的容量问题通常先打爆磁盘,再表现为功能异常,所以磁盘用量是这类系统的一等指标。
相关