以下内容基于真实抓包与社区逆向方案,给出一份可直接落地的 taobao.item_get_desc(商品描述 HTML)实战笔记,涵盖接口定位、签名逻辑、代码模板与常见坑,帮助你 10 分钟内拿到淘宝/天猫商品完整图文详情。
一、接口定位:为什么一定要" Desc "
-
官方开放平台 无 商品描述字段,最高权限仅输出标题、价格、SKU(
tbk.item.info.get)。 -
图文详情(俗称"白底图+文案+视频")只在 PC 端商品页异步加载:
https://detailskip.taobao.com/json/desc/get_desc.do?itemId=xxx该接口返回 经过 gzip 压缩的 HTML 片段,正是手机端"图文详情"原封不动数据源。
-
做 无货源搬家、比价、内容电商 必须拿到这段 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> |
主图视频 | 拿到 poster 与 src 可离线保存 |
五、常见坑与调试技巧
| 现象 | 原因 | 解决 |
|---|---|---|
返回 {"data":""} |
商品是"全球购"或"闲鱼"转链,无描述 | 直接跳过 |
| 中文乱码 | 先 gzip 后误用 UTF-8 解码 | 严格按照 gbk → latin1 → gzip → gbk 链路 |
| 403 滑块 | IP 高频 | ① 降速 1~3 s ② 共享池代理 ③ 复用 Cookie(JSESSIONID) |
| 图片裂图 | // 协议 |
清洗时统一补 https: |
六、生产级改造
-
异步批量
用
aiohttp协程池,500 个商品 2 分钟拉完,QPS≈8 安全区。 -
断点续传
以
num_iid做唯一键,Redis 记录"成功/失败",失败 3 次进死信队列。 -
合规兜底
- 仅用于内部比价/选品,页面保留淘宝版权信息;
- 控制频率:同一 IP 日请求 ≤5 万,避免触发"账号环境风险"。
七、一句话总结
taobao.item_get_desc 本质就是解析 detailskip.taobao.com/json/desc/get_desc.do 这一"隐形"接口,gzip+urlencode 双层解码是核心;掌握后,可在 10 行代码内把淘宝/天猫图文详情完整搬回本地,为后续无货源铺货、内容生成、比价系统提供最丰富的原生素材。
如遇任何疑问或有进一步的需求,请随时与我私信或者评论联系。