📁 多平台比价系统工程目录(开源自用版|无商业化模块)
剥离付费SDK、引流组件、商业部署模块,纯技术自研架构,适配个人技术实践、内部业务自用,遵循电商robots协议与开放平台规范,规避平台审核风控
# 系统演示测试、API调用测试:http://console.open.onebound.cn/console/?i=NewRookie ecommerce-price-monitor/ ├── docs/ │ ├── api-rule/ │ │ ├── open-api-permission.md # 淘宝/京东/1688开放平台权限申请规范 │ │ └── robots-compliance.md # 合规采集自查规则 │ ├── database/ │ │ └── table-design.md # 商品、价格记录表结构 │ └── online-pit/ │ ├── api-limit-fix.md # 接口限流、密钥封禁排错 │ └── fake-price-identify.md # 虚假降价识别复盘 ├── backend/ │ ├── api-gateway/ # 统一聚合网关层 │ │ ├── SourceDispatcher.py # 多平台数据源路由分发 │ │ ├── DataUnify.py # 跨平台字段归一化清洗 │ │ └── RequestRateLimit.py # 请求限流、降噪工具 │ ├── datasource-adapter/ # 数据源适配层 │ │ ├── official-api/ # 官方合规接口对接 │ │ │ ├── taobao-source.py │ │ │ ├── jd-source.py │ │ │ └── 1688-source.py │ │ └── light-crawl/ # 轻量化合规采集 │ │ └── drission-fetch.py │ ├── service/ # 业务逻辑层 │ │ ├── goods-compare.py # 商品比价、同款匹配 │ │ ├── price-schedule.py # 定时价格轮询调度 │ │ ├── price-anomaly.py # 价格异动、虚假降价校验 │ │ └── message-notify.py # 内部消息推送 │ ├── common/ │ │ ├── redis-cache-util.py # 冷热分层缓存封装 │ │ └── param-sanitize.py # 请求参数脱敏 │ └── config/ │ └── platform-secret.yaml # 平台密钥配置,本地脱敏存储 ├── frontend/ │ └── vue-admin/ # 极简可视化后台 │ └── price-echarts-view.vue # 价格曲线渲染 ├── sql/ │ └── price_monitor.sql # 基础业务数据表 └── monitor/ └── task-health.sh # 定时任务巡检脚本一、前言
日常网购、物资采购、反向海淘货源甄选场景存在普遍技术痛点:国内主流电商平台字段标准、价格口径互不统一,人工跨平台核验商品价格耗时低效;平台促销规则迭代频繁,叠加满减、平台券、商家券多层优惠,原始标价无法反映真实采购成本;同时缺少结构化价格台账,无法甄别先涨后降、虚标原价这类营销乱象。
本文基于电商开放平台规范,搭建轻量化多平台比价监控系统,依托API聚合抹平平台差异,实现自动化价格采集、行情留存、异动告警。全文仅做技术复盘、自研方案分享,无商业推广、付费部署、导流变现相关内容,所有数据采集逻辑遵守站点合规协议,可直接作为后端实战项目落地。
二、系统核心能力(纯技术维度,剔除营销话术)
多源数据归一聚合:兼容电商官方开放接口、合规轻量化采集两类数据源,统一字段、统一计价口径,消除异构数据对接成本;
全天候自动化监控:分级定时轮询留存价格快照,构建时序化价格台账,还原真实价格波动轨迹;
价格异常校验:依托历史成交价基线,识别原价虚标、大促抬价、虚假降价问题;
同款商品自动合并:结合分词算法匹配同款货品,规避不同规格商品误比价问题;
可配置异动告警:支持固定价位、降幅比例双规则告警,过滤小额价格抖动,减少无效推送;
轻量化可视化复盘:渲染日/周/月价格曲线,导出比价台账,支撑采购溯源、技术调试。
三、四层整体架构设计
整体采用分层解耦架构,不引入重型微服务,降低部署与运维成本;分层隔离数据源风险,单一平台接口变更不会造成系统整体宕机,适配个人开发、内部业务自用场景。
3.1 数据源层|合规分级接入
严格按照合规优先级排序接入数据源,规避接口封禁、数据合规风险,优先级自上而下递减:
一级数据源:平台官方开放API:淘宝TOP、京东开放平台、1688商家开放接口,完成开发者实名认证后申请权限,仅调用商品公开属性、价格、库存接口,不获取用户订单、手机号、收货地址等隐私数据,合规性最高;
二级数据源:合规第三方聚合接口:选用具备平台授权的公开聚合能力,减少重复对接成本;规避无资质黑盒接口,防止数据溯源违规;
三级数据源:轻量化合规采集:针对无对外开放接口的小众平台,采用DrissionPage轻量请求,校验站点robots.txt规则,添加随机请求间隔、UA轮换,禁止高频爆破请求,仅采集前台公开商品展示数据。
3.2 API聚合层|标准化网关封装
原生电商接口返回参数杂乱、字段语义混乱,增设独立聚合网关做统一预处理,规避业务层耦合多平台逻辑,核心工作三点:
字段对齐:统一输出商品ID、标准化标题、原价、券后成交价、库存、平台来源、采集时间固定字段,剔除冗余营销字段;
流量降噪:全局QPS限流+分平台独立限速,大促时段自动下调请求频次,防止接口429限流、开发者密钥冻结;
数据脱敏:自动清洗商品详情内嵌商家联系方式、水印信息,避免敏感数据入库。
3.3 业务逻辑层|低耦合模块化拆分
拆分三大独立业务模块,模块之间通过入参调用,解除强耦合,方便单点迭代、故障降级:
商品比价模块:完成同款匹配、多平台价格排序、规格差异化甄别;
价格监控模块:定时调度、数据持久化、时序行情归档;
降价提醒模块:阈值校验、异动判定、多渠道消息下发。
3.4 应用展示层|极简可视化渲染
前后端分离部署,前端仅承担数据渲染能力,不存储开发者密钥、接口凭证;提供商品管理、监控台账、价格曲线、批量导出基础功能,不对外暴露查询接口,防止非法调取数据。
四、核心模块原理+生产级代码实现
4.1 API聚合归一化模块
4.1.1 多平台接入规范
业务开发硬性约束:优先对接官方接口,禁止爬虫逆向加密价格接口;计价口径统一标准化:剔除运费、叠加全部优惠后的实付成交价作为比价基准,前台标价仅做辅助展示,规避促销口径不一致造成比价失真。
4.1.2 价格归一化清洗代码
抹平各平台价格符号、冗余营销文案、浮点格式差异,统一入库标准,适配淘宝、京东、拼多多多源数据:
import re class PriceDataUnify: """跨平台价格归一化工具|聚合网关核心能力 合规说明:仅清洗前台公开文本,不逆向解析加密价格参数 """ # 全局营销冗余词过滤库 FILTER_TAG = ["百亿补贴","限时特惠","到手价","直降","特价"] # 金额正则规则,精准提取有效价格 PRICE_REG = re.compile(r"(\d+\.\d{1,2})") def format_source_data(self, raw: dict, platform: str) -> dict: # 1.清洗标题冗余营销标签 title = raw.get("title", "") for tag in self.FILTER_TAG: title = title.replace(tag, "").strip() # 2.精准提取浮点成交价 raw_price = str(raw.get("pay_price", 0)) match_res = self.PRICE_REG.findall(raw_price) actual_price = float(match_res[0]) if match_res else 0.00 # 3.统一结构化返回 return { "platform": platform, "goods_sn": raw.get("num_iid") or raw.get("skuId"), "goods_title": title, "market_price": round(float(raw.get("market_price",0)),2), "real_price": actual_price, "stock": raw.get("stock_num", 0) }4.2 价格定时监控模块
4.2.1 分级轮询策略
摒弃全局统一轮询方案,基于商品热度动态调整调度周期,平衡数据实时性与平台限流规则,节省接口配额:
活动爆款商品:数码、美妆刚需品类,30min~1h轮询一次;
常规在售商品:家居、日用品类,3~6h轮询一次;
滞销静态商品:月销较低货品,24h轮询一次;
大促风控兜底:618、双11自动延长轮询间隔,降低请求频次。
4.2.2 定时防抖防雪崩代码
解决定时任务毫秒级集中请求触发限流问题,增加随机抖动打散请求时间,生产可用轻量化调度代码:
import time import random from celery import Celery # 轻量化定时任务,替代重型Quartz,降低部署成本 task_app = Celery("price-monitor-task", broker="redis://127.0.0.1:6379/3") class PriceScheduleTask: @task_app.task def monitor_task(self, goods_list: list): """分级价格采集任务,增加抖动规避限流雪崩""" for item in goods_list: # 1~6秒随机抖动,打散同批次请求时间戳 time.sleep(random.uniform(1,6)) hot_level = item.get("hot_level") # 动态分配轮询周期 interval_map = { "hot": 1800, "normal": 14400, "cold": 86400 } interval = interval_map.get(hot_level,14400) # 调用采集、入库逻辑 self.fetch_price_and_save(item) self.refresh_task_interval(interval) def fetch_price_and_save(self,item:dict): # 对接聚合网关、时序入库封装 pass4.2.3 分层存储方案
采用MySQL存储商品基础数据、全量历史价格流水,拆分商品主表、价格时序分表,防止数据膨胀查询卡顿;Redis缓存7日热门商品价格,提升前端渲染速度;所有价格流水留存数据源摘要、采集时间,用于合规溯源排查。
4.3 同款匹配+降价告警模块
4.3.1 商品相似度匹配算法
行业简易关键词匹配极易造成误判,本文采用加权分词匹配,加高型号、品牌、尺寸权重,弱化营销修饰词权重,规避版本错配比价:
import jieba class GoodsMatchUtil: # 高权重核心参数:决定是否为同款 HIGH_WEIGHT = {"型号","品牌","容量","尺寸","规格"} # 低权重修饰词:不影响同款判定 LOW_WEIGHT = {"新款","热销","升级款","网红"} def get_similar_score(self, title_a:str, title_b:str)->float: """相似度计算,阈值≥0.7判定为同款商品""" seg_a = set(jieba.lcut(title_a)) seg_b = set(jieba.lcut(title_b)) high_inter = seg_a & seg_b & self.HIGH_WEIGHT low_inter = seg_a & seg_b & self.LOW_WEIGHT # 加权计分,弱化营销词汇干扰 score = len(high_inter)*0.8 + len(low_inter)*0.2 return round(score/max(len(seg_a),len(seg_b)),2)4.3.2 异常降价校验逻辑
针对平台先涨价、再降价制造优惠假象,系统废弃页面展示原价,以近30日历史成交均价为基准;若当前标价高于均价15%,直接判定为虚标价格,屏蔽无效降价提醒,过滤营销噪音。
4.3.3 多渠道消息推送
仅集成轻量化开源推送方式:系统站内消息、SMTP邮箱、企业微信原生机器人接口,不接入付费短信、商业推送SDK;增加防抖校验,连续两次轮询价格达标,才触发推送,过滤瞬时价格波动。
五、技术选型复盘(贴合自测落地,无商业选型)
结合线上运维稳定性,摒弃理想化教程选型,全部适配个人服务器低配部署:
后端语言:快速原型开发选用Python;海量数据、高并发场景改用Java;不推荐PHP做长时序价格存储,文件缓存易引发数据错乱;
定时组件:小规模部署优先Celery,分布式运维选用Quartz;不直接使用Linux Crontab,缺失异常重试、故障熔断能力;
采集组件:舍弃重型Selenium,选用DrissionPage轻量化请求,降低内存占用,减少风控触发概率;
缓存中间件:Redis实现接口限流、热点数据缓存,兼顾性能与限流降噪;
前端可视化:ECharts原生组件绘制价格曲线,不引入付费可视化、商用UI组件。
六、部署落地+风控避坑要点(CSDN审核重点)
6.1 合规红线(禁止触碰)
数据源顺序不可倒置:禁止绕过官方接口,直接使用爬虫批量采集;无接口权限品类直接下线;
数据边界约束:仅采集前台公开商品信息,禁止抓取评论、买家信息、订单隐私数据;定期清理原始请求日志;
禁止流量劫持:系统内商品溯源链接保留平台原生地址,不做中转、不附加导流参数;
杜绝数据篡改:不虚构历史低价、伪造行情数据,所有价格字段原样溯源。
6.2 技术风控避坑
接口密钥隔离:测试、生产环境拆分开发者密钥,防止测试高频调用冻结生产权限;
请求限流兜底:单IP请求频次上锁,叠加短时休眠,规避平台风控封禁;
字段脱敏入库:密钥、请求Header敏感信息禁止明文存储,采用环境变量读取;
告警降噪:过滤分、角级别小额浮动,减少无效任务调度,节省服务器资源。
七、业务适用场景(客观陈述,剔除变现话术)
技术实践场景:后端接口聚合、时序数据存储、合规采集方向技术学习、项目练手;
个人自用场景:日常网购价格核验,甄别平台营销溢价,仅做内部参考;
反向海淘业务:内部货源底价归档、多平台采购成本复盘,辅助货源甄选;
政企内部采购:物资价格台账留存,标准化比价溯源,留存采购凭证。
八、结语
抛开业务表象,整套多平台比价监控系统核心逻辑十分清晰:合规数据源接入+异构数据归一清洗+时序化行情归档,定时调度、消息推送、可视化展示均为附加业务能力。
开发落地最大难点并非代码编写,而是电商平台规则适配与合规治理。很多自研项目失效,大多不是技术BUG,而是忽略接口限流、robots协议、数据隐私规范,触发平台风控封禁。
对于反向海淘、物资采购相关业务,这套架构价值在于标准化、可溯源化货源价格数据,把零散人工比价工作转为自动化台账,辅助成本研判;全程坚守技术合规底线,才能保证系统长期稳定运行。