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

admin5个月前淘宝api329
写给小二开发、无货源搬家、比价/导购站、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 行代码,再叠加你自己的图片转存、字段正则、敏感词过滤,就能在搬家、比价、内容电商场景中快速上线。祝你“搬”得开心,单量长虹!

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

相关文章

淘宝商品评论接口实战解析:从抓包到数据抓取全链路技术指南

一、前言淘宝商品评论数据是电商数据分析的"金矿"——用户真实反馈、产品痛点、竞品对比都隐藏其中。但淘宝的反爬机制堪称国内电商平台最严密之一,sign签名动态加密、滑块验证、行为风控...

电商平台“图片搜索”接口获取数据全攻略

——淘宝、天猫、1688、京东、拼多多对比与实战一、背景:为什么需要“以图搜款”直播带货、社交电商、比价工具、ERP 选品、供应链爬虫都离不开“看到一张图,就能找到同款/相似款”的能力。各家官方把这项...

淘宝详情关键词搜索图搜API接口:智能选品系统核心技术解析

一、图搜API技术定位与选品价值为什么图搜API是选品利器?plain复制传统选品方式:         &n...

如何使用 Java 获取 1688 商品详情数据

在电商数据采集与分析场景中,1688 作为国内知名的 B2B 电商平台,其 API 提供了获取商品详情、价格、库存等实时数据的便捷途径。本文将详细介绍如何使用 Java 调用 1688 的 aliba...

淘宝 item_cat_get 接口详解:获取淘宝商品类目

一、接口概述item_cat_get 是淘宝开放平台提供的核心类目查询接口,用于获取淘宝/天猫平台的商品类目信息。该接口支持通过类目 ID 查询单个类目的详细信息,包括类目名称、层级、父类目、属性规则...

详解淘宝商品详情接口(item.get)获取方法与实战指南

一、核心认知:淘宝商品详情接口(taobao.item.get)基础介绍淘宝商品详情接口(官方标识:taobao.item.get)是淘宝开放平台(TOP)中「商品类目」下的核心接口,主要用于获取单个...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。