×

淘宝商品描述接口 item_get_desc 代码逐行解析

admin admin 发表于2026-01-05 16:55:23 浏览24 评论0

抢沙发发表评论

写给小二开发、无货源搬家、比价/导购站、ERP 上货——10 分钟拿到“图文详情”HTML 源码。

一、接口定位:官方没有,为什么还要它?

  1. 淘宝/天猫开放平台最高权限接口不返回图文详情,只给标题、价格、SKU 等静态字段。
  2. 真正“白底图 + 文案 + 视频”的详情页,来自 PC 端异步地址:
    https://detailskip.taobao.com/json/desc/get_desc.do?itemId={num_iid}
    返回 gzip 压缩后的 HTML 片段,正是手机端图文详情的原始数据。
  3. 想做无货源批量搬家、比价、内容电商,必须拿到这段 HTML,否则只能手工复制。

二、请求流程 4 步(先通览,再拆代码)

表格
复制
步骤关键动作是否可并发
① 取商品 ID从搜索/列表页解析 num_iid
② 请求 desc 接口detailskip.taobao.com/json/desc/get_desc.do
③ 解压+解码zlib.decompress → HTML
④ 清洗入库去外跳、补全协议、下载图片

三、完整源码(Python 3.x)

Python
复制
import re, json, gzip, time, requestsfrom urllib.parse import unquotefrom 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
    :param num_iid: 商品数字 ID
    :return: 清洗后的 HTML 字符串
    """
    # ① 组装 URL(带时间戳防缓存)
    url = (f"https://detailskip.taobao.com/json/desc/get_desc.do?"
           f"itemId={num_iid}&t={int(time.time()*1000)}")
    rsp = requests.get(url, headers=HEADERS, timeout=10)
    rsp.raise_for_status()

    # ② 返回是 JSONP: descUrl({"data":{"desc":"..."}})
    jsonp = rsp.text
    data = json.loads(re.search(r"\(({.*})\)", jsonp).group(1))
    raw = data["data"]["desc"]          # 仍是 urlencode+gzip 双重压缩

    # ③ 解码:先 urldecode → 再 gzip
    html = unquote(raw, encoding="gbk")
    html = gzip.decompress(html.encode("latin1")).decode("gbk")

    # ④ 清洗:去掉外跳、补全图片协议
    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)# —— ⑤ CLI 快速体验 —— #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))

四、逐行代码解析

表格
复制
行号区间关键知识为什么这么做
① url 拼接时间戳 t防 CDN 缓存,避免拿到旧描述
② jsonp 正则descUrl({...})接口返回的是 JSONP,非标准 JSON,需要正则抠括号
③ 双重压缩urlencode + gzip淘宝为了节省流量,先 gzip 再 urlencode;顺序反了会乱码
④ BeautifulSoup清洗 HTML去掉外跳、补全 //img.alicdn.com 协议,防止后期 404
⑤ 写文件本地调试直接双击 desc.html 即可看到与手淘一致的图文详情

五、返回长什么样?

接口原始 JSONP 示例(截断):
JavaScript
复制
descUrl({
  "data": {
    "desc": "%1F%8B%08%00...(略)"
  }})
解压后得到标准 HTML,结构类似:
HTML
预览
复制
<div class="content">
  <p><img src="https://img.alicdn.com/imgextra/i3/220668653254/O1CN01abc_!!220668653254.jpg" /></p>
  <p>【商品卖点】……</p>
  <table> …… </table></div>
可直接入库或渲染到小程序/WebView。

六、常见坑点 & 解决方案

表格
复制
坑点现象解决
返回“desc”为空商品无详情或 ID 错误先浏览器打开 detailskip 地址确认
gzip 解码报错UnicodeDecodeError确保先 unquotelatin1gzipgbk 顺序
图片 404相对路径 //img统一替换成 https://
触发滑块偶尔 403加 timeout + 随机 UA + 重试 3 次即可
频率限制同 IP 连续 200 次后慢速单线程 200 ms 延迟基本安全

七、业务落地 3 案例

  1. 无货源 ERP
    批量调用 get_desc_html → 清洗 → 把图片转存 OSS → 生成新的 desc.html → 上传到拼多多/抖店,完成“一键搬家”。
  2. 比价/导购站
    desc 里的图片 URL 单独抽出 → 做图片指纹对比 → 发现竞品更新立即推送钉钉。
  3. 小程序富文本
    清洗后的 HTML 直接喂给 rich-text 组件;视频封面单独抽出来放在首图,提升停留时长。

八、小结

item_get_desc 本质就是淘宝前端自己的详情加载接口,无签名、无 token、无 QPS 限制,但返回的是“压缩+编码”的 HTML。
只要按顺序解压、解码、清洗,就能 100 % 还原手淘图文详情。跑通上面 30 行代码,再叠加你自己的图片转存、字段正则、敏感词过滤,就能在搬家、比价、内容电商场景中快速上线。祝你“搬”得开心,单量长虹!

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

群贤毕至

访客