×

如何使用 item_get 接口获取 1688 商品详情?(完整实操指南)

知名用户18007905473 知名用户18007905473 发表于2025-11-20 14:29:53 浏览50 评论0

抢沙发发表评论


item_get 是 1688 商品详情 API 系列中最常用的第三方封装接口(基于阿里官方 alibaba.product.get 接口二次开发),特点是调用简洁、参数少、返回数据结构化,适配中小开发者快速对接 1688 商品数据的需求(如采购工具、竞品监控、分销管理等场景)。
以下是从准备工作到代码调用、数据解析的完整实操流程,含环境配置、参数说明、代码示例、错误排查,新手也能快速上手:

一、前置准备工作

在调用接口前,需完成 3 个核心步骤,确保权限和环境合法可用:

1. 获取接口调用凭证(key + secret)

item_get 是第三方封装接口(阿里官方无直接 item_get 接口),需从正规第三方数据平台申请调用权限,流程如下:
  • 选择支持 1688 接口的第三方平台(如阿里云市场、聚合数据、易源数据等),注册并完成实名认证;

  • 搜索 “1688 商品详情 API”,购买对应套餐(免费版通常有调用次数限制,商用需选付费版);

  • 购买后在平台后台获取 key(接口密钥) 和 secret(签名密钥),部分平台还会提供专属 API 网关地址。

⚠️ 注意:务必选择正规第三方平台,避免使用无资质的接口提供商(可能存在数据泄露、接口突然失效风险)。

2. 确认接口支持的返回字段

提前明确 item_get 接口可返回的核心字段(不同第三方平台字段略有差异,以下为通用字段):
  • 基础信息:商品 ID、标题、类目、主图、多图列表、批发价区间、起订量、30 天销量;

  • 规格库存:SKU 列表、规格组合(颜色 / 尺寸)、实时库存、SKU 阶梯批发价;

  • 详情描述:详情页 HTML、纯文本描述、详情图列表、商品参数表;

  • 商家信息:店铺名称、店铺类型(工厂 / 贸易商)、诚信通等级。

3. 环境配置(以 Python 为例)

需安装请求库(用于发送 HTTP 请求)和数据解析库(用于处理 JSON/HTML 数据),执行以下命令:
bash
运行
pip install requests  # 发送 HTTP 请求pip install beautifulsoup4  # 清洗详情页 HTML 内容

二、核心参数说明(必选 + 可选)

item_get 接口参数简洁,分为必选参数(缺失则调用失败)和可选参数(按需添加),通用参数如下:
参数名类型说明是否必填示例值
keyString第三方平台分配的接口密钥,用于身份验证2024abcdef1234567890
secretString第三方平台分配的签名密钥,部分平台需用于生成签名(部分平台免签名)88889999abcdef0000
num_iidString1688 商品唯一 ID(即 product_id),从商品详情页 URL 中提取698765432109(从 URL https://detail.1688.com/offer/698765432109.html 提取)
fieldsString需返回的字段列表,多个字段用逗号分隔,默认返回全部字段(按需筛选可提升响应速度)title,price,sales,sku_list,desc_text
sales_dataInt是否返回 30 天销量数据,1 = 返回,0 = 不返回(默认 1)1
cacheString是否启用缓存,yes= 启用(重复请求同一商品时返回缓存数据,提升速度),no= 实时请求yes
关键:num_iid(商品 ID)的提取方式:打开 1688 商品详情页,URL 格式为 https://detail.1688.com/offer/XXXXXX.html,其中 XXXXXX 即为 num_iid(纯数字字符串)。

三、完整代码示例(Python)

以下代码实现 “调用 item_get 接口 → 获取商品详情 → 解析核心数据 → 清洗详情文本” 的全流程,兼容多数第三方平台接口格式:

1. 基础版(无签名验证,部分平台适用)

python
运行
import requestsfrom bs4 import BeautifulSoup# 1. 配置接口参数(替换为你的实际信息)API_URL = "https://api.xxx.com/1688/item_get"  # 第三方平台的 API 网关地址KEY = "你的 key"SECRET = "你的 secret"  # 若平台免签名,可删除该参数NUM_IID = "698765432109"  # 目标商品 ID# 2. 构造请求参数params = {
    "key": KEY,
    "num_iid": NUM_IID,
    "fields": "title,price_range,min_order_quantity,sales_count,main_image,image_list,sku_list,desc_html,shop_name",
    "cache": "no"  # 测试阶段用 no,避免缓存影响数据准确性}# 3. 发送 HTTP 请求(GET 方法为主,部分平台支持 POST)try:
    response = requests.get(API_URL, params=params, timeout=15)
    response.raise_for_status()  # 抛出 HTTP 错误(如 404、500)
    result = response.json()  # 解析 JSON 响应

    # 4. 验证接口调用是否成功
    if result.get("code") == 200 and result.get("success"):
        data = result.get("data")  # 核心商品数据
        print("=== 商品基础信息 ===")
        print(f"商品标题:{data.get('title')}")
        print(f"批发价区间:{data.get('price_range')} 元")
        print(f"最小起订量:{data.get('min_order_quantity')} 件")
        print(f"30 天销量:{data.get('sales_count')} 单")
        print(f"主图 URL:{data.get('main_image')}")
        print(f"店铺名称:{data.get('shop_name')}")

        # 5. 解析 SKU 规格与阶梯价
        print("\n=== SKU 信息 ===")
        sku_list = data.get("sku_list", [])
        for sku in sku_list:
            print(f"SKU 规格:{sku.get('spec_names')}")
            print(f"阶梯批发价:{sku.get('price_levels')}")
            print(f"库存:{sku.get('stock')} 件\n")

        # 6. 清洗详情页 HTML,提取纯文本
        print("=== 商品详情(纯文本) ===")
        desc_html = data.get("desc_html", "")
        soup = BeautifulSoup(desc_html, "html.parser")
        desc_text = soup.get_text(strip=True, separator="\n")  # 去除标签和多余空格
        print(desc_text[:500] + "...")  # 打印前 500 字

    else:
        # 接口调用失败,打印错误信息
        print(f"调用失败:{result.get('msg')}(错误码:{result.get('code')})")except requests.exceptions.RequestException as e:
    print(f"网络错误:{str(e)}")except Exception as e:
    print(f"解析错误:{str(e)}")

2. 进阶版(含签名验证,部分平台必填)

部分第三方平台要求请求时携带签名(防止参数被篡改),签名生成规则通常为:
  1. 按 ASCII 顺序排序所有请求参数(含 keynum_iid 等);

  2. 拼接参数名和参数值(如 key2024abcdefnum_iid698765432109);

  3. 在拼接字符串首尾添加 secret,用 MD5 或 HMAC-SHA1 加密,得到签名 sign

示例代码(添加签名生成逻辑):
python
运行
import requestsimport hashlibimport sortedcontainers  # 用于按 ASCII 排序参数(需提前安装:pip install sortedcontainers)# 1. 配置参数(含签名所需的 secret)API_URL = "https://api.xxx.com/1688/item_get"KEY = "你的 key"SECRET = "你的 secret"NUM_IID = "698765432109"# 2. 构造参数并排序params = {
    "key": KEY,
    "num_iid": NUM_IID,
    "fields": "title,price_range,sku_list",
    "cache": "no"}# 按参数名 ASCII 升序排序(关键步骤)sorted_params = sortedcontainers.SortedDict(params)# 3. 生成签名(以 MD5 加密为例,不同平台规则可能不同,需按平台文档调整)sign_str = SECRET  # 签名串开头添加 secretfor k, v in sorted_params.items():
    sign_str += f"{k}{v}"  # 拼接参数名和值sign_str += SECRET  # 签名串结尾添加 secretsign = hashlib.md5(sign_str.encode("utf-8")).hexdigest().upper()  # MD5 加密并转大写params["sign"] = sign  # 将签名添加到请求参数中# 4. 发送请求(后续解析逻辑与基础版一致)try:
    response = requests.get(API_URL, params=params, timeout=15)
    result = response.json()
    if result.get("code") == 200:
        print("调用成功,商品标题:", result["data"]["title"])
    else:
        print(f"失败:{result['msg']}")except Exception as e:
    print(f"错误:{str(e)}")

四、数据解析关键要点

  1. 价格字段处理price_range 是批发价区间(如 1.20-0.80),需结合 SKU 的 price_levels 解析阶梯价(如 10 件 1.2 元、100 件 0.8 元),避免直接取单一价格;

  2. HTML 清洗desc_html 含 1688 自定义标签(如 alibaba-detail),用 BeautifulSoup 提取纯文本或详情图列表,示例:

    python
    运行
    # 提取详情图列表desc_html = data.get("desc_html")soup = BeautifulSoup(desc_html, "html.parser")desc_images = [img["src"] for img in soup.find_all("img") if "src" in img.attrs]print("详情图列表:", desc_images)
  3. SKU 关联:通过 spec_names(如 25*35cm,红色)关联规格与 SKU,price_levels 是阶梯价列表(如 [{"quantity":10,"price":1.20}, {"quantity":100,"price":0.80}])。

五、常见错误排查(避坑指南)

调用失败时,优先按以下步骤排查,80% 的问题都能解决:

1. 错误码 400(参数错误)

  • 原因:num_iid 缺失或无效(如商品 ID 拼写错误、含特殊字符);

  • 排查:重新从 1688 商品 URL 提取 num_iid,确保为纯数字字符串(如 698765432109),且商品未下架。

2. 错误码 401(未授权 / 签名错误)

  • 原因:key/secret 错误、签名生成规则与平台不一致;

  • 排查:核对 key/secret 是否正确(注意大小写),按平台文档重新生成签名(如是否需要排序、加密算法是否为 HMAC-SHA256 而非 MD5)。

3. 错误码 429(调用频率超限)

  • 原因:免费版套餐调用次数用尽,或短时间内高频请求;

  • 排查:查看第三方平台后台的剩余调用次数,批量调用时添加随机延迟(如 time.sleep(random.uniform(1,3)))。

4. 错误码 500(服务器错误)

  • 原因:第三方平台接口故障,或商品数据异常;

  • 排查:换一个已知正常的商品 ID 测试,若仍失败,联系第三方平台客服反馈。

5. 返回数据为空 / 缺失字段

  • 原因:fields 参数筛选了该字段,或商品无对应数据(如无 SKU 的单规格商品);

  • 排查:删除 fields 参数(默认返回全部字段),或确认商品是否为多规格、是否有销量数据。

六、商用注意事项

  1. 合规使用数据:获取的商品数据仅用于自身经营(如采购、分销),禁止转售、批量爬取他人商品数据用于恶意竞争,需遵守 1688 平台规则和《网络安全法》;

  2. 缓存优化:重复请求同一商品时启用 cache=yes,减少调用次数和延迟,降低成本;

  3. 接口稳定性:商用场景建议选择付费版套餐,避免免费版接口突然限流或停用;同时添加重试机制(如接口失败后间隔 3 秒重试,最多 3 次)。

总结

使用 item_get 接口获取 1688 商品详情的核心流程是:申请接口凭证 → 配置参数 → 发送请求 → 解析数据。关键在于正确提取 num_iid、按平台规则生成签名(若需)、合理清洗数据。
如果需要对接其他语言(如 Java、PHP),核心逻辑一致:构造参数 → 发送 HTTP 请求 → 解析 JSON 数据,仅需调整对应的请求库和语法即可。若遇到具体平台的接口差异,可参考该平台的官方文档调整参数和签名规则。


群贤毕至

访客