项目背景与目标:电商运营每天需要盯竞品价格和销量,靠人工逐个平台抄价,一个人一天只能覆盖几十个商品,数据滞后还容易抄错,大促期间完全跟不上节奏。本项目目标是搭建一套数据采集与自动化报表平台,把「配置规则 → 定时采集 → 清洗入库 → 自动出报表」全流程自动化,让运营每天早上打开邮件就能看到最新的价格与销量分析。
核心功能:(1) 可视化规则配置,在页面上框选字段即可生成采集规则,无需写代码;(2) 灵活的定时调度,支持 Cron 表达式、按分钟/小时/天执行,可一键手动触发;(3) 反爬对抗能力,内置代理池轮换、UA 随机、请求限速、Cookie 池、验证码识别与失败重试;(4) 自动清洗去重,按业务主键和快照指纹过滤重复数据,并做完整率与异常值校验;(5) 多平台聚合报表,自动生成价格趋势、价格异动明细与销量排行;(6) 报表自动推送,支持定时邮件、企业微信告警和明细导出。
业务流程:在规则配置台拾取字段并试运行 → 发布规则并设置调度频率 → 调度器按周期触发任务 → 执行器集群多线程采集并自动处理反爬 → 解析清洗去重后入库 → 报表中心生成分析报表 → 按设定时间自动推送给业务方。
整体架构与设计思路:系统采用六层架构,做采集与展示解耦,避免采集波动影响业务使用。应用接入层提供任务管理、规则配置、报表中心与监控告警四个模块;调度编排层负责定时触发、队列分发、优先级与失败重试,采集任务全部异步化,接口即时返回不阻塞;采集层是反爬对抗的核心,包含请求调度、代理池管理、浏览器渲染与验证码识别;解析清洗层负责页面与接口双通道解析、字段抽取、去重和质量校验;存储层用 MySQL 存结构化数据、Redis 做去重缓存与队列、MinIO 归档原始页面以便回溯取证;输出层负责报表生成与多渠道推送。整套服务用 Docker Compose 部署,执行器节点可横向扩容。
我个人负责的部分:独立完成架构设计、调度引擎、采集与解析链路、报表模块的全部核心开发。具体包括:实现基于 Cron 的定时调度与 Celery 任务队列,把单机串行采集改造成多 Worker 并发,日均采集量从 3 万条提升到 12.8 万条;设计代理池管理模块,自动检测并剔除失效 IP,采集成功率稳定在 99% 以上;实现「可视化字段拾取 → 生成规则 → 在线试运行」闭环,运营自己就能配新任务,不用每次找开发;实现页面与接口双通道解析,静态页走 HTML 解析、动态页走 Playwright 渲染,兼顾速度和覆盖率;实现三级去重策略(业务主键 + 快照指纹 + 时间窗口),把重复率从 4% 降到 0.4%;搭建报表自动推送,价格周报与跌幅告警全自动发出。
遇到的难点及解决方案:一是目标站点反爬升级快,IP 被封、请求被拦,通过代理池轮换 + 请求间隔随机化 + UA/Cookie 池 + 限速熔断解决;二是动态渲染页面直接请求拿不到数据,通过 Playwright 渲染并复用浏览器上下文,同时优先寻找可用的接口通道,整体耗时下降 60%;三是数据重复和脏数据多,通过多级去重和字段完整率校验解决;四是任务量大时调度混乱、失败任务无人处理,通过优先级队列 + 指数退避重试 + 断点续采 + 告警通知解决;五是报表依赖人工触发,通过定时任务与自动推送打通最后一公里。