Python 爬虫获取 item_get_web —— 淘宝商品 SKU、详情图、券后价全流程解析

一、接口定位:item_get_web 到底是什么?

item_get_web 并不是淘宝官方文档里的标准 API 名称,而是技术社区对「Web 端商品详情页」数据的统称,通常指同时包含:

  • SKU 规格、价格、库存

  • 5 张主图 + 详情图 URL

  • 优惠券信息(面额、有效期)

  • 券后价(原价 - 面额)

聚合接口自研爬虫方案

下面给出一条无需登录、可并发、10 行核心代码就能跑通的「Web 端爬虫」思路,并逐行拆解。


二、整体思路(4 步 30 行代码)

步骤 目标 核心 URL
获取商品 ID 任意搜索列表
拉取详情 JSON https://detailskip.taobao.com/json/iid={num_iid}
解析 SKU / 价格 / 券 JSON → pandas.DataFrame
批量下载图片 异步 aiohttp + aiofiles

三、完整源码(可直接跑)

python 复制代码
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import re, json, asyncio, aiohttp, aiofiles
import pandas as pd
from urllib.parse import urljoin

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/",
}

async def item_get_web(num_iid: str):
    """并发获取 SKU、券后价、详情图"""
    url = f"https://detailskip.taobao.com/json/iid={num_iid}&t={pd.Timestamp.now().value}"

    async with aiohttp.ClientSession() as ses:
        async with ses.get(url, headers=HEADERS) as resp:
            txt = await resp.text()
            data = json.loads(re.search(r"\(({.*})\)", txt).group(1))

    # ① SKU 表格化
    sku_list = []
    for sku in data["sku"]["skuMap"].values():
        sku_list.append({
            "skuId": sku["skuId"],
            "price": float(sku["price"]),
            "stock": int(sku["stock"]),
            "props": ";".join([f"{k}:{v}" for k, v in sku["propPath"].items()])
        })
    df_sku = pd.DataFrame(sku_list)

    # ② 券后价计算
    coupon = data.get("coupon") or {}
    original_price = df_sku["price"].min()
    denomination = float(coupon.get("denomination", 0))
    coupon_price = original_price - denomination

    # ③ 详情图列表
    desc_imgs = [
        urljoin("https:", img)
        for img in re.findall(r'"https:(//img[^"]+)"', data["desc"])
    ]

    return {
        "num_iid": num_iid,
        "title": data["item"]["title"],
        "original_price": original_price,
        "coupon_price": coupon_price,
        "sku_df": df_sku,
        "desc_imgs": desc_imgs
    }

async def download_img(url, path):
    async with aiohttp.ClientSession() as ses:
        async with ses.get(url) as resp:
            async with aiofiles.open(path, "wb") as f:
                await f.write(await resp.read())

async def main(num_iid: str):
    info = await item_get_web(num_iid)
    print(f'{info["title"]} 原价 ¥{info["original_price"]} 券后 ¥{info["coupon_price"]}')
    print("SKU 预览")
    print(info["sku_df"].head())
    # 异步下载详情图
    tasks = [download_img(u, f"{num_iid}_{i}.jpg")
             for i, u in enumerate(info["desc_imgs"][:20])]
    await asyncio.gather(*tasks)
    print("详情图下载完成")

if __name__ == "__main__":
    asyncio.run(main("728649613560"))   # 替换任意宝贝 ID

四、逐行拆解

行号块 关键知识 为什么这么做
url Web 端详情接口 淘宝 PC 页异步地址,返回 JSONP,无需登录
② 正则抠 JSON \(({.*})\) 接口用 JSONP 回调,需正则剥壳
③ SKU 表格化 skuMap price/stock/propPath,直接转 DataFrame 方便后续落库
④ 券后价计算 original - denomination 与官方逻辑一致,券信息在 data["coupon"] 节点
⑤ 详情图正则 re.findall 详情 HTML 被放在 data["desc"],一次性正则抽出所有 //img.alicdn.com 链接
⑥ 异步下载 aiohttp+aiofiles 详情图 20~60 张,同步下载耗时 10 s+,异步可压到 1 s

五、常见问题速查

现象 原因 解决
desc 为空 商品无图文详情 跳过或补默认值
403/滑块 IP 短时间 >200 次 单 IP 加 200 ms 延迟,或接代理池
图片 404 相对路径 //img urljoin("https:", url) 补全协议
券信息缺失 商品无优惠 denomination=0,券后价=原价

六、业务落地 3 案例

  1. 无货源搬家

    批量跑 item_get_web → 转存 SKU 图 + 详情图到 OSS → 生成新 HTML → 上传到拼多多/抖店,完成"一键搬家"。

  2. 比价工具

    每 30 min 轮询 Top 1000 SKU 的 coupon_price → 写回 Redis → 前端价格曲线实时可视化。

  3. 库存预警
    df_sku["stock"] < 10 自动发飞书机器人,提醒运营及时补货。


七、小结

item_get_web 的核心就是解析淘宝 Web 端 JSONP 接口 ,一次性拿到 SKU、价格、库存、优惠券、详情图 5 大类数据。

跑通上面 30 行代码,再叠加异步下载、图片转存、字段清洗,就能在选品、比价、ERP 搬家场景中快速上线。祝你"搬"得开心,单量长虹!

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

相关推荐
风送雨20 小时前
FastMCP 2.0 服务端开发教学文档(下)
服务器·前端·网络·人工智能·python·ai
XTTX11020 小时前
Vue3+Cesium教程(36)--动态设置降雨效果
前端·javascript·vue.js
效率客栈老秦20 小时前
Python Trae提示词开发实战(8):数据采集与清洗一体化方案让效率提升10倍
人工智能·python·ai·提示词·trae
哈里谢顿20 小时前
一条 Python 语句在 C 扩展里到底怎么跑
python
znhy_2320 小时前
day46打卡
python
LYFlied21 小时前
WebGPU与浏览器边缘智能:开启去中心化AI新纪元
前端·人工智能·大模型·去中心化·区块链
Setsuna_F_Seiei21 小时前
2025 年度总结:人生重要阶段的一年
前端·程序员·年终总结
Edward.W21 小时前
Python uv:新一代Python包管理工具,彻底改变开发体验
开发语言·python·uv
小熊officer21 小时前
Python字符串
开发语言·数据库·python