多平台电商比价系统从零搭建合规

📁 多平台比价系统后端工程目录(轻量化开源版)

剔除商业化插件、付费SDK、引流模块,纯自研技术架构,区分数据源、聚合、业务、可视化层级,贴合个人部署、私有化二次开发,适配反向海淘货源比价场景,全流程合规可控

复制代码
# 系统演示测试、API调用测试:http://console.open.onebound.cn/console/?i=NewRookie
ecommerce-price-compare/
├── docs/
│   ├── compliance/
│   │   ├── api-robot-rule.md    # 各大电商robots协议、API合规台账
│   │   └── data-law-check.md    # 价格采集数据合规自查清单
│   ├── architecture/
│   │   ├── four-layer-arch.md   # 四层架构拆分、调用链路图
│   │   └── table-struct.md      # 价格、商品数据库表设计
│   └── pit-record/
│       ├── anti-crawl-fix.md    # 反爬封禁排查、限流修复日志
│       └── fake-price-guard.md  # 虚假降价识别复盘
├── backend/
│   ├── gateway/                 # API统一聚合网关
│   │   ├── SourceRouter.py      # 多平台数据源路由分发
│   │   ├── DataNormalize.py     # 跨平台字段归一化清洗
│   │   └── RequestLimiter.py    # 接口限流、请求降噪组件
│   ├── datasource/              # 数据源适配层
│   │   ├── official-api/        # 官方开放API对接
│   │   │   ├── taobao-adapter.py
│   │   │   ├── jd-adapter.py
│   │   │   └── 1688-adapter.py
│   │   └── crawl-safe/          # 合规轻量化采集模块
│   │       └── drission-spider.py
│   ├── business/                # 核心业务逻辑层
│   │   ├── goods-match.py       # 同款商品相似度匹配
│   │   ├── price-monitor.py     # 定时价格轮询、入库
│   │   ├── anomaly-check.py     # 虚假降价、价格异动校验
│   │   └── notify-sender.py     # 多渠道消息推送
│   ├── task/
│   │   └── crontab-scheduler.py # 分级定时调度任务
│   └── common/
│       ├── redis-cache.py       # 冷热分层缓存工具
│       └── db-util.py           # 历史价格入库封装
├── frontend/
│   └── vue-admin/               # 轻量化可视化后台
│       └── price-chart.vue      # 价格曲线渲染组件
├── sql/
│   └── price_compare_table.sql  # 业务基础数据表
└── monitor/
    └── api-health-check.sh       # 数据源可用性巡检脚本

正文

日常网购、企业物资采购、反向海淘货源甄选场景,长期存在重复查价、价格失真、监控低效问题。主流开源比价工具大多存在采集不合规、代码耦合严重、误判同款商品、无法识别价格造假缺陷。本文基于合规优先原则,拆解轻量化可落地多平台比价系统,包含分层架构、核心源码、线上避坑方案,全文仅做技术复盘、系统搭建分享,不含商业变现、付费部署、引流推广内容,所有采集方案遵守电商robots协议与数据合规条例。

一、业务痛点与系统搭建初衷

目前比价工作普遍存在四类痛点,也是自研系统的核心驱动力:

  1. 人力成本冗余:淘宝、京东、拼多多、1688平台字段、价格口径不统一,人工交叉核验耗时极高;

  2. 价格口径混乱:标价、满减价、券后到手价混杂,平台活动叠加规则不透明,无法核算真实成交成本;

  3. 行情不可追溯:无结构化历史价格台账,无法甄别先涨后降、虚标原价营销套路;

  4. 批量监控缺位:反向海淘、企业采购需要批量货源控价,人工监控无法覆盖海量商品。

搭建自研比价系统核心目标:合规聚合多平台公开商品数据、归一化价格口径、自动化行情监控,服务个人消费自查、采购成本核验,不篡改平台数据、不恶意导流、不开展不正当比价。

二、系统核心能力(剔除营销化表述,纯技术能力定义)

  1. 异构数据源统一聚合:兼容电商开放API、合规轻量化采集两类数据源,抹平各平台字段差异,统一价格统计口径;

  2. 分级自动化监控:根据商品热度动态调整轮询频率,兼顾数据实时性与平台限流合规要求;

  3. 价格欺诈识别:基于历史成交价基线校验,过滤平台原价虚标、大促溢价、临时抬价乱象;

  4. 同款商品精准匹配:基于分词相似度+规格权重算法,规避不同配置商品误匹配比价;

  5. 行情可视化复盘:结构化存储价格快照,生成走势图表,支撑采购溯源、行情复盘;

  6. 轻量化消息告警:解耦业务推送能力,按需启用站内、邮箱、企业微信通知,无强制推送。

三、四层整体架构设计(生产落地版本)

摒弃重型微服务架构,采用分层解耦轻量化架构,降低部署门槛,同时隔离数据源风险,避免单一平台接口变更导致整体系统宕机,四层自底向上逐级解耦。

3.1 数据源层:合规优先,分级采集

数据源按合规优先级排序,优先级逐级递减,规避风控封禁、数据违规风险,补充行业合规细则:

  1. 一级数据源:官方开放API:淘宝TOP、京东开放平台、1688商家开放接口,申请开发者资质调用,仅拉取公开商品、价格、库存字段,不获取用户地址、订单、手机号隐私数据;该方式具备平台合规背书,风控最低;

  2. 二级数据源:第三方合规聚合API:选用具备平台授权的公开聚合接口,减少自研对接工作量,规避重复造轮子;过滤无资质黑盒聚合接口,防止数据溯源违规;

  3. 三级数据源:轻量化合规采集:针对无对外开放接口平台,基于DrissionPage轻量化采集,严格校验站点robots.txt,封禁时段禁止请求;添加随机请求间隔、UA轮换,禁止高频爆破请求,仅采集公开商品展示数据。

3.2 API聚合层:统一网关归一化

多平台原生返回字段杂乱、价格字段语义歧义,增设独立聚合网关,做请求降噪、数据清洗、响应归一化,核心能力三点:

  1. 字段对齐:统一输出商品ID、标准化标题、原价、券后实付价、库存、品类、数据源7类基础字段,废弃冗余营销字段;

  2. 请求节流:全局QPS限流+分平台独立限速,大促期间自动下调调用频次,规避429限流、密钥冻结;

  3. 数据脱敏:过滤商品详情内嵌商家联系方式、隐私水印,入库前清洗敏感内容。

3.3 业务逻辑层:核心调度与数据校验

拆分低耦合三大模块,互不依赖,便于单点迭代、故障降级:价格监控调度模块、同款匹配比价模块、异动告警模块。额外增加合规校验子模块,每次数据入库前置合规自检。

3.4 应用展示层:轻量化可视化

前后端分离架构,前端仅做数据渲染,不存储原始数据源密钥;分为后台商品管理、价格曲线复盘、告警配置、批量导出四个页面,禁止对外提供公开查询接口,防止非法数据调取。

四、核心模块原理+生产级代码落地

4.1 API聚合归一化模块(风控最高模块)

4.1.1 多数据源适配规则

优先复用官方API结构化价格字段,不再二次解析页面文本;针对促销叠加乱象,统一以剔除运费、叠加全部优惠券后的实付成交价作为比价基准,标价仅做辅助展示。

4.1.2 价格数据清洗归一化代码

统一抹平平台价格格式、货币符号、冗余促销标签,解决京东、拼多多价格字段格式错乱问题:

复制代码
import re

class PriceNormalize:
    """跨平台价格归一化清洗工具|聚合网关核心组件
    合规说明:仅清洗公开展示文本,不逆向解密加密价格参数
    """
    # 价格冗余营销标签过滤词库
    FILTER_WORDS = ["限时特惠","百亿补贴","到手价","活动价","直降"]
    # 金额正则匹配规则
    PRICE_REG = re.compile(r"(\d+\.\d{1,2})")

    def clean_goods_data(self, raw_data:dict, source:str)->dict:
        """
        :param raw_data: 各平台原始接口返回数据
        :param source: 数据源平台 jd/taobao/pdd
        :return: 归一化标准化商品结构体
        """
        # 1.清洗标题冗余营销标签
        title = raw_data.get("title","")
        for word in self.FILTER_WORDS:
            title = title.replace(word,"")
        # 2.提取精准浮点价格,过滤¥、¥、-等符号
        raw_price = str(raw_data.get("price","0"))
        price_match = self.PRICE_REG.findall(raw_price)
        real_price = float(price_match[0]) if price_match else 0.00
        # 3.统一组装返回结构体,固定字段
        return {
            "source_platform": source,
            "goods_id": raw_data.get("num_iid") or raw_data.get("skuId"),
            "goods_title": title.strip(),
            "original_price": round(float(raw_data.get("market_price",0)),2),
            "actual_price": real_price, # 最终比价基准:真实成交价
            "stock_num": raw_data.get("stock",0),
            "crawl_time": raw_data.get("timestamp")
        }

4.2 价格监控定时调度模块

4.2.1 分级调度策略(防限流核心)

摒弃全局统一轮询,采用冷热分级调度,平衡实时性与平台风控,贴合电商接口限流规则:

  • 高热活动商品:美妆、数码爆款,轮询间隔30~60min,单平台QPS限制≤3;

  • 常规在售商品:家居、日用品类,轮询间隔3~6h;

  • 滞销静态商品:月销低于50,轮询间隔24h,降低接口配额消耗;

  • 大促防护:618、双11自动扩容休眠间隔,请求延时上浮2倍,规避风控处罚。

4.2.2 定时防雪崩调度代码

增加抖动延时,避免毫秒级集中请求触发限流,解决行业普遍定时任务雪崩问题:

复制代码
import time
import random
from celery import Celery

# 初始化轻量化定时任务,替代重型Quartz
app = Celery("price-task", broker="redis://127.0.0.1:6379/2")

class MonitorScheduler:
    @app.task
    def goods_price_task(self, goods_list:list):
        """分级价格轮询任务,增加随机抖动防雪崩"""
        for goods in goods_list:
            # 随机1~5秒抖动,打散请求时间戳
            jitter_sleep = random.uniform(1,5)
            time.sleep(jitter_sleep)
            hot_level = goods.get("hot_level")
            # 动态分配轮询间隔
            if hot_level == "hot":
                interval = 1800
            elif hot_level == "normal":
                interval = 14400
            else:
                interval = 86400
            # 调用价格采集、入库逻辑
            self.fetch_and_save_price(goods)
            # 动态刷新任务周期
            self.update_task_interval(interval)

    def fetch_and_save_price(self,goods:dict):
        # 调用聚合网关,采集+入库封装
        pass
4.2.3 数据存储规范

采用MySQL持久化全量价格快照,拆分商品基础表、价格流水表,做分表存储防止数据膨胀;Redis缓存近7日热门价格,提升查询速度。每条价格流水强制留存数据源、采集时间、原始报文摘要,用于合规溯源排查。

4.3 同款匹配+虚假价格校验模块

4.3.1 商品相似度匹配

行业多数比价系统缺陷:单纯关键词匹配,导致不同配置、不同版本商品误判同款。优化方案:标题分词+规格权重匹配,过滤版本偏差商品,核心简易算法:

复制代码
import jieba

class GoodsMatchUtil:
    # 高权重匹配字段:品牌、尺寸、型号,权重最高
    HIGH_WEIGHT = {"品牌","型号","容量","尺寸","版本"}
    # 低权重字段:营销修饰词、颜色文案
    LOW_WEIGHT = {"新款","热销","网红","升级款"}

    def calc_similarity(self,title1:str,title2:str)->float:
        """计算商品同款相似度,阈值≥0.7判定为同款"""
        seg1 = set(jieba.lcut(title1))
        seg2 = set(jieba.lcut(title2))
        # 加权计算相似度
        high_inter = seg1 & seg2 & self.HIGH_WEIGHT
        low_inter = seg1 & seg2 & self.LOW_WEIGHT
        score = len(high_inter)*0.8 + len(low_inter)*0.2
        return round(score/max(len(seg1),len(seg2)),2)
4.3.2 虚假降价识别逻辑

针对先涨价、再降价营销套路,废弃平台展示原价,以系统留存近30日历史成交价作为基准阈值:当前标价高于近30日均价15%,直接判定为虚标高价,屏蔽无效降价提醒。

4.4 降价告警推送模块

采用解耦推送设计,拆分业务触发、消息下发逻辑,支持双阈值配置:固定价位触发、降幅比例触发;过滤短时价格抖动,连续两次轮询价格达标才推送消息,避免无效告警骚扰。

推送仅集成SMTP邮箱、企业微信内部机器人接口,不接入第三方商业短信、付费推送接口,规避外部服务合规风险。

五、技术选型复盘(落地踩坑优化版)

摒弃网上教程过度理想化选型,结合线上运维稳定性梳理适配方案:

  1. 后端语言:快速迭代优先选用Python,数据量大、高并发场景改用Java;不推荐PHP高并发部署,文件缓存易造成价格数据错乱;

  2. 定时框架:小规模部署优先Celery,分布式运维选用Quartz;禁止直接使用Linux Crontab,无法做任务熔断、故障重试;

  3. 采集框架:舍弃Selenium重型浏览器,改用DrissionPage轻量化请求,内存占用降低60%,反指纹规避封禁;

  4. 缓存策略:采用冷热分层缓存,热门商品短时缓存,静态商品长效缓存,降低API调用配额消耗;

  5. 可视化:ECharts渲染价格曲线,自研最简组件,不引入付费可视化SDK。

六、线上部署合规+风控避坑要点(审核重点)

6.1 合规红线(必遵守,防止CSDN+线上双重违规)

  1. 数据源优先级不可倒置:禁止优先使用爬虫替代官方API,无接口权限品类直接下线,不强行采集;

  2. 数据边界约束:只采集公开商品展示字段,不抓取评论、买家信息、订单隐私数据,原始日志定期自动清理;

  3. 禁止流量劫持:系统内商品跳转保留官方原生链接,不中转、不截留流量、不挂载导流参数;

  4. 规避价格欺诈风险:不虚构历史低价、不篡改行情数据,所有价格溯源可查。

6.2 技术风控避坑

  1. 接口签名兜底:官方API定时刷新密钥,配置密钥过期熔断,防止密钥泄露引发风控追责;

  2. IP风控隔离:批量监控启用内网IP轮询,禁止单IP高频请求,按需配置轻量化代理池;

  3. 告警降噪:增加价格波动防抖阈值,过滤分、角级别小额浮动,减少无效任务消耗;

  4. 版本隔离:测试环境、生产环境拆分开发者密钥,避免测试高频调用冻结生产权限。

七、业务落地适用场景(客观表述,去除变现话术)

  1. 个人自查场景:日常网购核验成交价,甄别平台营销溢价,仅自用数据核验;

  2. 反向海淘货源甄选:批量核验1688、拼多多货源采购底价,留存价格台账,长期管控采购成本;

  3. 政企物资采购:办公耗材、物料定期行情复盘,留存比价凭证,标准化采购溯源;

  4. 行业技术调研:电商数据处理、API聚合技术学习、后端架构实战演练。

八、结语

拆解整套多平台比价系统,底层核心逻辑始终只有两点:合规数据源接入+异构数据归一化清洗,定时调度、告警可视化均为附加业务能力。

从后端研发视角来看,这套系统技术门槛偏低,真正难点不在于接口调用、代码开发,而是长期合规治理与平台风控平衡。尤其是对接各大电商开放平台,必须严守数据采集边界、限流规则,舍弃违规便捷方案,才能保证系统长期稳定运行。

对于反向海淘、采购类业务,该架构最大价值是标准化货源行情台账,把零散的采购比价工作自动化、可溯源化,降低人为决策偏差,而非单纯低价薅取优惠。

相关推荐
用户1040747270231 小时前
《架构特别篇三:DEVICES 层》
架构
捷配链1 小时前
新能源四层板叠层逻辑-最优架构适配电控高低压混合场景
架构·制造·pcb
AustinXu1 小时前
进化搜索:Harness Engineering 之后,Agent 怎么自己进化自己
架构·claude·敏捷开发
柒和远方1 小时前
Worker Readiness:为什么 `/health` 不能证明后台任务能跑
前端·后端·架构
hai3152475431 小时前
九章编译法:DEEPSEEK V3.2汇编编译实例
java·开发语言
lkshop1 小时前
Next.js 网站 SEO 优化:从 SSR、Sitemap 到结构化数据
开发语言·javascript·ecmascript
xiaoshuai10242 小时前
夜里机器替你跑全量测试,挂了还自己修:我的夜间自动巡检系统
架构
星火燎原162 小时前
Android ViewModel 接收 Intent 参数
架构