抓取要存清洗后的正文而不是整页

**抓取类系统应该存「清洗后的正文」,不是「抓到的原始响应」。** 存整页会把一条 17 KB 的正文变成 3.4 MB(约 200 倍),再在数据库、单篇缓存、RSS 文件缓存里各存一份,磁盘会被放大到远超预期。

症状与根因

  • 现象:服务磁盘很快被占满,之后写入开始静默失败(见 异步补齐长期不生效要查写入失败)。
  • 根因两条:
    1. 保存了完整微信文章页面——包含大量脚本、运行组件、Base64 资源,而这些对阅读正文毫无用处。
    2. 同一份内容重复保存多份——SQLite、单篇文章缓存、RSS 文件缓存各一份。

正确做法

  • 清洗在入库前做:只提取正文(以及必要的元数据/图片引用),原始响应不落库。
  • 同一条内容只保留一个真相源,其余(RSS 文件、缓存)按需生成而不是各存一份。
  • 修复要连存量一起处理:扩容磁盘恢复写入 → 改抓取逻辑 → 清掉已有的巨大缓存与原始网页数据。

可迁移的判断

  • 存储里放的应该是要展示/要用的内容,不是收到的原始字节。
  • 抓取器的存储占用要按「单条正文大小 × 条数 × 副本数」估算;副本数是隐藏的乘数。
  • 抓取链路的容量问题通常先打爆磁盘,再表现为功能异常,所以磁盘用量是这类系统的一等指标。

相关