实战解析:淘宝/天猫商品描述API(taobao.item_get_desc)接口

以下内容基于真实抓包与社区逆向方案,给出一份可直接落地的 taobao.item_get_desc(商品描述 HTML)实战笔记,涵盖接口定位、签名逻辑、代码模板与常见坑,帮助你 10 分钟内拿到淘宝/天猫商品完整图文详情。


一、接口定位:为什么一定要" Desc "

  1. 官方开放平台 商品描述字段,最高权限仅输出标题、价格、SKU(tbk.item.info.get)。

  2. 图文详情(俗称"白底图+文案+视频")只在 PC 端商品页异步加载:

    https://detailskip.taobao.com/json/desc/get_desc.do?itemId=xxx

    该接口返回 经过 gzip 压缩的 HTML 片段,正是手机端"图文详情"原封不动数据源。

  3. 无货源搬家、比价、内容电商 必须拿到这段 HTML,否则只能人工复制。


二、请求流程 4 步走

步骤 URL 作用 是否可复用
① 拿商品 ID ------ 从列表页或搜索接口解析出 num_iid 一次
② 请求描述接口 detailskip.taobao.com/json/desc/get_desc.do 返回 gzip + urlencode 的 HTML 可并发
③ 解压 & 解码 Python zlib.decompress 得到原生 UTF-8 HTML ------
④ 清洗 BeautifulSoup/pyQuery 去外跳链接、补全图片 // 协议 ------

三、完整可运行代码(Python 3.x)

Python 复制代码
import re, json, gzip, time, random, requests
from urllib.parse import unquote
from bs4 import BeautifulSoup

HEADERS = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 "
                  "(KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36",
    "Referer": "https://item.taobao.com/",
}

def get_desc_html(num_iid: str) -> str:
    """获取淘宝/天猫商品描述 HTML"""
    url = f"https://detailskip.taobao.com/json/desc/get_desc.do?itemId={num_iid}&t={int(time.time()*1000)}"
    rsp = requests.get(url, headers=HEADERS, timeout=10)
    rsp.raise_for_status()

    # 1. 接口返回的是 jsonp:  descUrl({"data":{"desc":"..."}})
    jsonp = rsp.text
    data = json.loads(re.search(r"(({.*}))", jsonp).group(1))
    raw = data["data"]["desc"]

    # 2. 经过两层 encode + gzip
    html = unquote(raw, encoding="gbk")          # 先 urldecode
    html = gzip.decompress(html.encode("latin1")).decode("gbk")  # 再 gzip

    # 3. 清洗:去掉淘宝外跳,替换成 https
    soup = BeautifulSoup(html, "lxml")
    for img in soup.find_all("img"):
        src = img.get("src") or ""
        if src.startswith("//"):
            img["src"] = "https:" + src
    return str(soup)

if __name__ == "__main__":
    html = get_desc_html("728649613560")   # 替换成任意宝贝 ID
    with open("desc.html", "w", encoding="utf-8") as f:
        f.write(html)
    print("图文详情已写入 desc.html,共 %.1f KB" % (len(html)/1024))

单请求 200400 ms,返回 10200 KB 富文本,含原图、表格、视频封面


四、字段速览(返回 HTML 内常见节点)

节点 示例 用途
<img src="https://img.alicdn.com/imgextra/..."> 白底图/场景图 一键搬家可直接上传到自己相册
<table class="tm-tableAttr"> 参数表 提取规格名+值,做同款对比
<video> 主图视频 拿到 postersrc 可离线保存

五、常见坑与调试技巧

现象 原因 解决
返回 {"data":""} 商品是"全球购"或"闲鱼"转链,无描述 直接跳过
中文乱码 先 gzip 后误用 UTF-8 解码 严格按照 gbk → latin1 → gzip → gbk 链路
403 滑块 IP 高频 ① 降速 1~3 s ② 共享池代理 ③ 复用 Cookie(JSESSIONID
图片裂图 // 协议 清洗时统一补 https:

六、生产级改造

  1. 异步批量

    aiohttp 协程池,500 个商品 2 分钟拉完,QPS≈8 安全区。

  2. 断点续传

    num_iid 做唯一键,Redis 记录"成功/失败",失败 3 次进死信队列。

  3. 合规兜底

    • 仅用于内部比价/选品,页面保留淘宝版权信息;
    • 控制频率:同一 IP 日请求 ≤5 万,避免触发"账号环境风险"。

七、一句话总结

taobao.item_get_desc 本质就是解析 detailskip.taobao.com/json/desc/get_desc.do 这一"隐形"接口,gzip+urlencode 双层解码是核心;掌握后,可在 10 行代码内把淘宝/天猫图文详情完整搬回本地,为后续无货源铺货、内容生成、比价系统提供最丰富的原生素材。

如遇任何疑问或有进一步的需求,请随时与我私信或者评论联系。

相关推荐
黑客思维者16 小时前
XGW-9000 网关 DDR4/LPDDR4 内存子系统信号完整性仿真细化设计
开发语言·python·嵌入式硬件·ddr4·信号仿真
Felven16 小时前
华为昇腾310P模型转换失败问题解决
linux·python·模型训练·昇腾·310p
ekprada16 小时前
Day 41 卷积神经网络(CNN)基础与实战
人工智能·python·机器学习
Dingdangcat8616 小时前
基于改进YOLO11-C2PSA-SEFFN的工业环境气体泄漏检测与定位系统实现
python
AI视觉网奇16 小时前
live2d 单图转模型 单图生成模型
java·前端·python
咸鱼加辣16 小时前
【python面试题】LRUCache
开发语言·python
LitchiCheng16 小时前
WSL2 中 pynput 无法捕获按键输入?
开发语言·python
中年程序员一枚16 小时前
Python 中处理视频添加 / 替换音频
开发语言·python·音视频
Katecat9966316 小时前
基于YOLO11-C3k2-JDPM的车牌识别系统优化与实现
python
醇氧16 小时前
Spring Boot 应用启动优化:自定义事件监听与优雅启动管理
java·开发语言·python