×

淘宝商品详情数据解析

知名用户18007905473 知名用户18007905473 发表于2026-01-22 14:07:41 浏览64 评论0

抢沙发发表评论

淘宝商品详情数据解析是从 API 返回的原始数据中提取、清洗、结构化核心字段,并转化为可用于分析 / 决策的有效信息的过程,核心是解决「字段多、嵌套深、格式不统一」的问题。以下从数据结构拆解、核心字段解析、通用解析流程、实战代码示例四个维度展开。

一、 淘宝商品详情 API 返回数据结构(以taobao.item.get为例)

API 返回的是嵌套 JSON 结构,分为响应头响应体两部分,核心数据在item_get_response.item节点下。
json
{
    "item_get_response": {
        "item": {
            "num_iid": "123456789", // 商品ID(核心主键)
            "title": "2025新款智能手表 心率监测 14天续航", // 商品标题
            "price": "399.00", // 商品价格(主价)
            "volume": "5000", // 30天销量
            "stock": "1000", // 库存
            "good_rate": "98.5", // 好评率
            "seller_id": "987654321", // 卖家ID
            "shop_name": "XX数码旗舰店", // 店铺名称
            "skus": { // SKU列表(嵌套结构)
                "sku": [
                    {"sku_id": "111", "price": "379.00", "stock": "500", "properties": "颜色:黑色;尺寸:标准版"},
                    {"sku_id": "222", "price": "429.00", "stock": "300", "properties": "颜色:银色;尺寸:运动版"}
                ]
            },
            "promotion_info": { // 促销信息
                "is_on_sale": "true",
                "discount": "满300减30"
            },
            "item_imgs": { // 商品图片
                "item_img": [{"url": "https://xxx.jpg"}, {"url": "https://yyy.jpg"}]
            }
        }
    },
    "request_id": "abc123" // 请求ID(用于排查问题)}

二、 核心字段分类与解析要点

按业务用途可将字段分为基础信息、交易信息、SKU 信息、营销信息、媒体信息五大类,解析时需注意格式转换与异常处理。
字段分类核心字段解析要点业务价值
基础信息num_iid title seller_id shop_name1. num_iid作为唯一主键,去重依据
2. title清洗特殊字符(如🔥、【】),提取关键词
商品唯一标识、店铺关联
交易信息price volume stock good_rate1. pricefloat类型,处理 “券后价”“补贴价” 等特殊表述
2. volume为 30 天销量,需区分 “付款人数” 和 “销量”
3. stock为空时填充为 0
定价分析、库存预警、热销判断
SKU 信息skus.skusku_id price properties1. 拆分properties(如 “颜色:黑色;尺寸:标准版”→ 字典{"颜色":"黑色","尺寸":"标准版"}
2. 提取 SKU 级价格 / 库存,计算最低价 / 最高价
精细化定价、库存分层管理
营销信息promotion_info1. 解析满减、优惠券、秒杀等规则
2. 判断是否处于促销期
竞品促销监控、调价策略
媒体信息item_imgs video1. 提取主图、详情图 URL
2. 过滤无效图片链接
内容分析、商品视觉对标

三、 通用数据解析流程(4 步标准化)

无论用于选品、竞品监控还是评价分析,解析流程都遵循以下 4 个步骤,确保数据质量。

步骤 1: 数据提取(从 JSON 中提取核心节点)

  • 优先提取item节点,处理 API 调用失败的情况(如返回error_response);

  • 对嵌套字段(如skus item_imgs)做判空处理,避免KeyError

步骤 2: 格式标准化(统一数据类型)

  • 数值型字段price/volume/stock/good_rate转为float/int,缺失值填充(如库存填充 0,好评率填充 90%);

  • 文本型字段title/properties去除特殊字符、多余空格,统一编码为 UTF-8;

  • 日期型字段(如create_time):统一格式为YYYY-MM-DD HH:MM:SS

步骤 3: 特征衍生(从原始字段提取分析维度)

这是解析的核心价值环节,通过衍生特征支撑后续分析:
  1. 标题特征:从title提取关键词(如 “智能”“续航”“防水”),标记商品属性;

  2. 价格特征:计算 SKU 最低价 / 最高价,判断价格带(如 “100-200 元”“200-300 元”);

  3. 库存特征:计算库存周转率(销量 / 库存),标记滞销 / 热销 SKU;

  4. 促销特征:标记是否有满减 / 优惠券,计算折扣力度(如满 300 减 30 → 折扣率 10%)。

步骤 4: 数据校验(过滤无效数据)

设置校验规则,剔除无价值数据:
  • 过滤price=0volume<10的低价值商品;

  • 过滤stock=0的下架商品;

  • 去重:按num_iid+crawl_time删除重复记录。


四、 实战解析代码(Python 版)

以下是可直接运行的解析代码,包含数据提取、标准化、特征衍生、校验全流程。
python
运行
import jsonimport reimport pandas as pddef parse_taobao_item(raw_json_str):
    """
    解析淘宝商品详情API返回的JSON数据
    :param raw_json_str: API返回的原始JSON字符串
    :return: 结构化的商品字典
    """
    # 步骤1:解析JSON并提取核心节点
    try:
        raw_data = json.loads(raw_json_str)
        # 处理API调用失败情况
        if "error_response" in raw_data:
            print(f"API调用失败:{raw_data['error_response']['msg']}")
            return None
        item = raw_data["item_get_response"]["item"]
    except Exception as e:
        print(f"JSON解析失败:{e}")
        return None

    # 步骤2:基础字段提取与标准化
    parsed_item = {
        "num_iid": item.get("num_iid", ""),
        "title": clean_title(item.get("title", "")),
        "shop_name": item.get("shop_name", ""),
        "seller_id": item.get("seller_id", ""),
        # 数值字段标准化
        "price": float(item.get("price", 0)),
        "volume": int(item.get("volume", 0)),
        "stock": int(item.get("stock", 0)),
        "good_rate": float(item.get("good_rate", 90.0))
    }

    # 步骤3:SKU信息解析与衍生特征
    sku_list = item.get("skus", {}).get("sku", [])
    sku_parsed = []
    sku_prices = []
    for sku in sku_list:
        sku_dict = {
            "sku_id": sku.get("sku_id", ""),
            "sku_price": float(sku.get("price", 0)),
            "sku_stock": int(sku.get("stock", 0)),
            "properties": parse_sku_properties(sku.get("properties", ""))
        }
        sku_parsed.append(sku_dict)
        sku_prices.append(sku_dict["sku_price"])
    
    # 衍生SKU价格特征
    parsed_item["sku_list"] = sku_parsed
    parsed_item["min_sku_price"] = min(sku_prices) if sku_prices else parsed_item["price"]
    parsed_item["max_sku_price"] = max(sku_prices) if sku_prices else parsed_item["price"]

    # 步骤4:促销信息解析
    promotion = item.get("promotion_info", {})
    parsed_item["is_promotion"] = promotion.get("is_on_sale", "false") == "true"
    parsed_item["discount"] = promotion.get("discount", "无")

    # 步骤5:数据校验
    if not check_item_valid(parsed_item):
        return None

    return parsed_itemdef clean_title(title):
    """清洗商品标题:去除特殊字符"""
    # 去除emoji、特殊符号
    pattern = re.compile(r"[^\u4e00-\u9fa5a-zA-Z0-9\s]")
    return pattern.sub("", title).strip()def parse_sku_properties(properties_str):
    """拆分SKU属性字符串为字典"""
    props = {}
    if not properties_str:
        return props    for prop in properties_str.split(";"):
        if ":" in prop:
            k, v = prop.split(":", 1)
            props[k.strip()] = v.strip()
    return propsdef check_item_valid(parsed_item):
    """校验数据有效性"""
    # 过滤无商品ID、价格为0、销量过低的商品
    if not parsed_item["num_iid"]:
        return False
    if parsed_item["price"] <= 0:
        return False
    if parsed_item["volume"] < 10:
        return False
    return True# 示例:测试解析if __name__ == "__main__":
    # 模拟API返回的JSON字符串
    raw_json = '''{
        "item_get_response": {"item": {"num_iid": "123456789", "title": "【新品】智能手表🔥399元", "price": "399.00", "volume": "5000", "stock": "1000", "good_rate": "98.5", "shop_name": "XX数码店", "skus": {"sku": [{"sku_id": "111", "price": "379", "properties": "颜色:黑色;尺寸:标准版"}]}, "promotion_info": {"is_on_sale": "true", "discount": "满300减30"}}}
    }'''
    result = parse_taobao_item(raw_json)
    print("解析后的数据:")
    print(json.dumps(result, ensure_ascii=False, indent=2))

五、 高级解析技巧与注意事项

  1. 批量解析优化:用pandas将多个商品解析结果转为 DataFrame,提升批量处理效率;

  2. 嵌套字段处理:对item_imgs videos等列表字段,可提取前 3 张主图 URL,减少数据量;

  3. 异常容错:对 API 返回的非标准字段(如price为 “面议”),需单独处理,避免类型转换报错;

  4. 合规性处理:若数据包含用户评价中的个人信息(如昵称),需进行脱敏(如 “张 **”)。


群贤毕至

访客