×

Shein 商品详情接口:跨平台字段映射与数据归一化实践

Ace Ace 发表于2026-09-22 17:55:28 浏览19 评论0

抢沙发发表评论

前言

在跨境选品业务中,直接调用 Shein 原生接口存在地域、语言与权限限制,不少业务团队选择依托外贸邦开放接口获取 Shein 商品详情数据。本文不做简单请求演示,聚焦多源字段对齐、空值容错、币种单位标准化问题,提供可直接用于业务同步的 Python 封装示例,解决实际开发里中文描述、尺码信息、多图数组解析等痛点。

前置准备


  1. 已申请外贸邦接口调用凭证(appkey、secret),开通 Shein 商品详情数据权限

  2. Python 环境,依赖 requests 库,用于 http 请求与 json 解析

  3. 业务侧提前建立字段映射表:把外贸邦返回的封装字段,映射为内部商品库标准字段


说明:接口返回数据是外贸邦聚合后的标准化结果,并非直接调用 Shein 源站,字段结构做了一层封装,这也是和直接爬取源站最大区别。

点击获取key和secret

完整代码示例

import requests
import time

class SheinDetailApi:
    def __init__(self, appkey, secret):
        self.appkey = appkey
        self.secret = secret
        self.api_url = "https://api.waimaobang.com/shein/goods/detail"
        self.session = requests.Session()

    def get_detail(self, goods_id):
        params = {
            "appkey": self.appkey,
            "secret": self.secret,
            "goods_id": goods_id
        }
        try:
            resp = self.session.get(self.api_url, params=params, timeout=15)
            resp.raise_for_status()
            raw_data = resp.json()
            # 业务层数据归一化处理
            if raw_data.get("code") != 200:
                return {"status":False,"msg":raw_data.get("msg"),"data":None}
            item = raw_data["data"]
            result = {
                "spu_id": item.get("spu_id",""),
                "title_cn": item.get("title_cn",""),
                "title_en": item.get("title_en",""),
                "price": float(item.get("price",0)),
                "currency": item.get("currency","USD"),
                "stock": item.get("stock_num",0),
                "image_list": item.get("images",[]),
                "size_info": item.get("size_table",[]),
                "category": item.get("category_name",""),
                "publish_time": item.get("publish_time","")
            }
            return {"status":True,"msg":"success","data":result}
        except requests.exceptions.RequestException as e:
            return {"status":False,"msg":f"请求异常:{str(e)}","data":None}

if __name__ == "__main__":
    # 替换为自己的凭证
    api = SheinDetailApi(appkey="your_appkey",secret="your_secret")
    res = api.get_detail(goods_id="123456789")
    print(res)
    time.sleep(1)

核心逻辑解析

这段代码核心不在于发起请求,而是归一化清洗。外贸邦返回的 Shein 详情存在部分字段缺失、空数组、价格字符串等情况。代码统一提取需要的业务字段,做类型强制转换,图片、尺码表转为数组格式,方便入库。


  • 异常捕获:区分网络超时、接口业务错误两类异常,便于日志告警

  • 会话复用:使用 Session 减少 tcp 握手开销,适合批量同步场景

  • 字段裁剪:过滤业务不需要的冗余字段,降低数据库存储压力



群贤毕至

访客