一、开篇:从“爬下来”到“存得住”如果你写过爬虫,一定经历过这样的场景:爬虫跑了一整夜,醒来发现程序崩溃,几万条数据灰飞烟灭;数据存成了 JSON 文件,结果文件太大,编辑器打不开,解析还报编码错误;想查某条历史记录,只能grep,但字段一多就抓瞎;数据重复了,不知道哪些该更新,哪些该插入。这些问题本质上不是“爬不下来”,而是没想好怎么存。我做了六年爬虫开发,踩过文件存储、SQLite、Excel 导出等各种坑之后,最终沉淀下来的组合是:MySQL + MongoDB 双写持久化架构前者管“结构化关系查询”,后者管“灵活嵌套文档”。两者互补,几乎能覆盖爬虫数据存储的所有场景。今天这篇文章,我会把整套方案掰开揉碎讲清楚,包含:为什么选 MySQL + MongoDB 而不是其他组合;表结构和文档结构的设计哲学;异步 + 同步双写的高可用架构;去重、更新、错误重试、性能优化的完整代码;生产环境踩过的坑和解决方案。全文所有代码均基于Python 3.11+、