
(可直接放入你的技术文章,纯技术、带代码、带解析、带踩坑点)
淘宝商品详情 API 返回的是多层嵌套 JSON,包含商品基础信息、SKU、图片、价格、营销、物流、服务等数十个字段。
结构化解析 = 把杂乱嵌套 JSON → 干净、统一、可直接入库 / 前端使用的标准数据模型
把淘宝 API 原始返回,解析成统一结构:
{
"item_get_response": {
"item": {
"num_iid": "680123456789",
"title": "夏季纯棉短袖T恤",
"price": "89.00",
"promotion_price": "59.00",
"pic_url": "https://img.taobao.com/xxx.jpg",
"item_imgs": [ {"url":"https://img.taobao.com/xxx1.jpg"}, ... ],
"skus": {
"sku": [
{
"sku_id": "123456",
"price": "59.00",
"quantity": 100,
"properties_name": "颜色:白色;尺码:M"
}
]
},
"desc": "<p>商品详情HTML</p>",
"sales": 12345,
"free_ship": true
}
}
}技术点:淘宝 API 固定包裹在 item_get_response → item 下
# 解析入口
def parse_item(json_data):
# 1. 提取根节点
response = json_data.get("item_get_response", {})
item = response.get("item", {})
if not item:
raise Exception("商品数据为空")
return itemnum_iid = item.get("num_iid", "") # 商品唯一ID
title = item.get("title", "") # 标题
cid = item.get("cid", "") # 类目ID
category_name = item.get("category_name", "") # 类目名称
location = item.get("location", "") # 发货地
seller_nick = item.get("nick", "") # 卖家昵称
shop_name = item.get("shop_name", "") # 店铺名
detail_url = item.get("detail_url", "") # 商品链接踩坑点:
num_iid 必须字符串类型,不能转数字(避免超长精度丢失)淘宝价格字段多,必须统一结构化:
# 价格统一格式化
price_data = {
"origin_price": float(item.get("price", 0)), # 原价
"sale_price": float(item.get("promotion_price", 0)),# 促销价
"final_price": 0.0
}
# 最终价 = 促销价优先,无促销则用原价
price_data["final_price"] = price_data["sale_price"] or price_data["origin_price"]业务价值:价格监控、比价系统核心字段
技术点:淘宝图片有防盗链,需标准化处理
# 主图
main_pic = item.get("pic_url", "")
# 详情图列表
item_imgs = item.get("item_imgs", [])
img_list = [img.get("url", "") for img in item_imgs if img.get("url")]
# 清洗:去掉协议头,兼容HTTPS/HTTP
img_list = [
url.replace("http:", "https:") for url in img_list
]实战用途:自有商城、小程序、APP 商品展示
把 颜色:白色;尺码:M 解析为:
plaintext
{
"specs": {"颜色":"白色","尺码":"M"},
"price":59,
"stock":100
}sku_list = []
sku_array = item.get("skus", {}).get("sku", [])
for sku in sku_array:
sku_id = sku.get("sku_id", "")
price = float(sku.get("price", 0))
stock = sku.get("quantity", 0)
props_name = sku.get("properties_name", "")
# 拆分规格:颜色:白色;尺码:M
specs = {}
if props_name:
prop_arr = props_name.split(";")
for p in prop_arr:
if ":" in p:
k, v = p.split(":", 1)
specs[k] = v
sku_info = {
"sku_id": sku_id,
"price": price,
"stock": stock,
"specs": specs
}
sku_list.append(sku_info)这是电商系统必备结构:下单、库存、规格选择全靠它
desc_html = item.get("desc", "")
# 清洗:去掉淘宝无用标签、懒加载、内链
def clean_html(html):
html = html.replace("data-src", "src") # 懒加载替换
html = html.replace("taobao.com", "") # 可按需过滤
return html用途:同步到自有商城、小程序详情页
sales_info = {
"sales": item.get("sales", 0), # 销量
"free_shipping": item.get("free_ship", False), # 是否包邮
"service": item.get("service", ""), # 服务:七天无理由
"is_on_sale": True # 可根据字段判断上下架
}{
"num_iid": "680123456789",
"title": "夏季纯棉短袖T恤",
"price": {
"origin": 89.00,
"sale": 59.00,
"final": 59.00
},
"images": {
"main": "https://img.taobao.com/xxx.jpg",
"list": [ "https://img.taobao.com/xxx1.jpg", ... ]
},
"skus": [
{
"sku_id": "123456",
"price": 59.00,
"stock": 100,
"specs": { "颜色": "白色", "尺码": "M" }
}
],
"sales": 12345,
"free_shipping": true,
"desc": "<p>清洗后的HTML</p>"
}这就是企业级标准结构:可直接入库、给前端、给 ERP、给小程序
淘宝商品详情 API 的 JSON 结构化解析,是电商数据开发中最关键、最实用、最容易踩坑的环节。
核心价值:
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。