news 2026/4/3 6:27:52

1688 商品详情 API 调用与数据解析 Python 实战

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
1688 商品详情 API 调用与数据解析 Python 实战

你想要的是 1688 商品详情 API 的 Python 调用与数据解析实战方案,核心是完成API 凭证配置、接口请求(含签名)、响应数据解析、异常处理的全流程落地,我会提供可直接运行的代码,并详解关键步骤和数据解析技巧,适配新手快速上手。

一、前置准备

1. 必备条件

  • 已完成 1688 开放平台开发者认证(个人 / 企业),创建自研应用,获取AppKeyAppSecret(参考之前的 1688 API 接入流程);
  • 安装 Python 依赖:

    bash

    运行

    pip install requests # 发送HTTP请求 pip install dicttoxml # 可选,处理XML格式响应(1688部分接口返回XML) pip install python-dotenv # 管理环境变量,避免硬编码凭证

2. 核心接口选型

1688 商品详情的核心接口为:alibaba.item.get(获取商品基础信息)和alibaba.item.sku.get(获取 SKU / 价格 / 库存信息),本次实战以alibaba.item.get为例,接口参数说明:

表格

参数名必传说明
app_key你的 AppKey
method接口名称,固定为alibaba.item.get
format响应格式,可选json/xml,推荐json
timestamp时间戳(格式:yyyy-MM-dd HH:mm:ss,如 2026-02-10 15:30:00)
v接口版本,固定为2.0
sign签名(MD5 加密,1688 签名规则)
offer_id商品 ID(1688 商品链接中offerId=后的数字,如699988776655
fields指定返回字段,如title,price,sku,description,不传返回全部字段

二、完整 Python 实战代码

1. 代码实现(含签名、请求、解析)

python

运行

import requests import time import hashlib import json from dotenv import load_dotenv import os # 加载环境变量(建议将AppKey/Secret存放在.env文件,避免硬编码) load_dotenv() APP_KEY = os.getenv("1688_APP_KEY") APP_SECRET = os.getenv("1688_APP_SECRET") def generate_1688_sign(params, app_secret): """ 生成1688 API签名(核心:ASCII升序排序+MD5加密) :param params: 接口请求参数(dict) :param app_secret: 1688应用的AppSecret :return: 签名字符串 """ # 1. 按参数名ASCII升序排序 sorted_params = sorted(params.items(), key=lambda x: x[0]) # 2. 拼接为key=value格式 sign_str = "" for k, v in sorted_params: if v is not None and v != "": sign_str += f"{k}{v}" # 3. 首尾拼接AppSecret,MD5加密后转大写 sign_str = app_secret + sign_str + app_secret sign = hashlib.md5(sign_str.encode("utf-8")).hexdigest().upper() return sign def get_1688_item_detail(offer_id): """ 调用1688商品详情API,解析核心数据 :param offer_id: 1688商品ID :return: 解析后的商品详情字典 """ # 1. 构造公共参数 params = { "app_key": APP_KEY, "method": "alibaba.item.get", "format": "json", "timestamp": time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()), "v": "2.0", "offer_id": offer_id, "fields": "title,price,sku_info,description,spec_info,image_urls,seller_info" # 指定返回字段 } # 2. 生成签名并添加到参数 params["sign"] = generate_1688_sign(params, APP_SECRET) # 3. 发送请求(1688 API网关地址) url = "https://gw.open.1688.com/openapi/param2/2/alibaba.item.get/2.0" try: response = requests.get(url, params=params, timeout=10) response.raise_for_status() # 抛出HTTP错误(如403/500) result = response.json() except requests.exceptions.RequestException as e: print(f"API请求失败:{e}") return None except json.JSONDecodeError: print("响应数据不是JSON格式,可能是XML") return None # 4. 解析核心数据(过滤冗余字段,提取业务所需) if "error_response" in result: print(f"API调用错误:{result['error_response']['msg']}(错误码:{result['error_response']['code']})") return None item_data = result.get("alibaba_item_get_response", {}).get("item", {}) parsed_data = { "商品ID": item_data.get("offer_id"), "商品标题": item_data.get("title"), "价格(元)": item_data.get("price"), "商品主图": item_data.get("image_urls", {}).get("image_url", []), "卖家信息": { "卖家ID": item_data.get("seller_info", {}).get("user_id"), "店铺名称": item_data.get("seller_info", {}).get("shop_name") }, "SKU信息": item_data.get("sku_info", {}).get("sku", []), # 多SKU规格 "商品规格": item_data.get("spec_info", {}).get("spec", []), "商品描述": item_data.get("description") # 商品详情页富文本 } return parsed_data # 测试调用 if __name__ == "__main__": # 替换为你要查询的1688商品ID(从商品链接中提取) test_offer_id = "699988776655" item_detail = get_1688_item_detail(test_offer_id) if item_detail: print("=== 1688商品详情解析结果 ===") print(json.dumps(item_detail, ensure_ascii=False, indent=2)) else: print("商品详情获取失败")

2. 环境配置(.env 文件)

在代码同级目录创建.env文件,写入你的凭证:

env

1688_APP_KEY=你的AppKey 1688_APP_SECRET=你的AppSecret

三、关键步骤详解

1. 签名生成(核心防错点)

1688 API 的签名是调用成功的关键,错误会直接返回invalid signature

  • 排序规则:严格按参数名 ASCII 码升序(如app_keymethod前,timestampv前);
  • 加密规则:拼接后字符串需UTF-8编码,MD5 加密后转大写
  • 注意:空值参数不参与签名(如fields不传则不加入)。

2. 数据解析技巧

1688 返回的商品数据字段多且嵌套深,重点关注:

  • 价格 / 库存:SKU 级的价格和库存需从sku_info.sku中解析(每个 SKU 对应不同规格和价格);
  • 图片链接image_urls.image_url是列表,包含主图和详情图;
  • 富文本描述description是 HTML 格式,如需提取纯文本,可使用BeautifulSoup清理:

    python

    运行

    from bs4 import BeautifulSoup # 清理商品描述中的HTML标签 if parsed_data["商品描述"]: soup = BeautifulSoup(parsed_data["商品描述"], "html.parser") parsed_data["商品描述_纯文本"] = soup.get_text(strip=True)

3. 常见错误与解决

表格

错误码 / 提示原因解决方法
invalid signature签名错误检查参数排序、AppSecret 是否正确、时间戳格式
insufficient permissions权限不足确认应用已申请alibaba.item.get接口权限
offer_id invalid商品 ID 错误检查商品 ID 是否为数字,或商品是否存在
request frequency limit调用频率超限添加延时(如time.sleep(1)),控制调用频率

四、进阶优化

1. 批量调用(多商品 ID)

python

运行

def batch_get_item_detail(offer_id_list): """批量获取商品详情,避免频率超限""" result_list = [] for offer_id in offer_id_list: detail = get_1688_item_detail(offer_id) if detail: result_list.append(detail) time.sleep(1) # 每次调用间隔1秒,避免限流 return result_list # 测试批量调用 offer_ids = ["699988776655", "700011223344"] batch_result = batch_get_item_detail(offer_ids) print(f"批量获取{len(batch_result)}个商品详情")

2. 数据持久化(保存到 JSON/Excel)

python

运行

import pandas as pd # 保存到JSON文件 with open("1688_item_detail.json", "w", encoding="utf-8") as f: json.dump(item_detail, f, ensure_ascii=False, indent=2) # 保存到Excel(批量数据更适用) df = pd.DataFrame(batch_result) df.to_excel("1688_item_batch.xlsx", index=False, encoding="utf-8")

总结

  1. 1688 商品详情 API 调用的核心是正确生成签名,需严格遵循 ASCII 升序 + MD5 加密规则;
  2. 数据解析需聚焦业务字段(标题、价格、SKU、卖家信息),过滤冗余嵌套数据;
  3. 生产环境需添加频率控制异常重试(如失败后重试 2 次),避免接口调用失败影响业务。
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/3/25 10:19:40

一键启动Qwen3-ForcedAligner:语音处理从未如此简单

一键启动Qwen3-ForcedAligner:语音处理从未如此简单 1. 引言:语音对齐的痛点与解决方案 你是否曾经遇到过这样的场景:需要为视频添加字幕,但手动对齐音频和文字耗时耗力?或者想要分析语音内容,却苦于没有…

作者头像 李华
网站建设 2026/3/25 10:56:30

LLaVA-v1.6-7B多模态模型5分钟快速部署指南:Ollama一键安装

LLaVA-v1.6-7B多模态模型5分钟快速部署指南:Ollama一键安装 想体验让AI看懂图片并和你聊天吗?LLaVA-v1.6-7B就是这样一个神奇的多模态模型。它能像人一样“看”图片,理解图片里的内容,然后和你进行智能对话。无论是识别物体、描述…

作者头像 李华
网站建设 2026/3/31 18:16:14

Spring Boot日期格式注解@DateTimeFormat和@JsonFormat的区别与应用

DateTimeFormat 和 JsonFormat 是 Spring Boot 中处理日期时间格式化的两个常用注解,但它们的用途和工作场景不同。DateTimeFormat用途主要用于 Spring MVC 参数绑定,处理表单提交、URL参数、请求参数中的日期时间字符串转换。使用场景javaController pu…

作者头像 李华
网站建设 2026/3/29 9:20:46

影墨·今颜FLUX.1-dev实战:LoRA权重融合+风格迁移+局部重绘技巧

影墨今颜FLUX.1-dev实战:LoRA权重融合风格迁移局部重绘技巧 1. 认识影墨今颜:重新定义AI人像生成 「影墨今颜」是一款基于FLUX.1-dev引擎的高端AI影像创作系统,专门针对时尚人像生成进行了深度优化。这个系统最大的特点是能够生成极其真实、…

作者头像 李华
网站建设 2026/3/27 12:42:17

Qwen2.5-7B与ChatGLM3-6B性能对比:推理速度实测部署教程

Qwen2.5-7B与ChatGLM3-6B性能对比:推理速度实测部署教程 1. 两款主力7B模型的核心定位与差异 在当前轻量级大模型落地实践中,Qwen2.5-7B-Instruct 和 ChatGLM3-6B 是开发者最常选用的两个开源指令模型。它们参数量相近(70亿 vs 62亿&#x…

作者头像 李华
网站建设 2026/4/3 4:52:28

一键部署:Moondream2轻量级视觉问答系统体验

一键部署:Moondream2轻量级视觉问答系统体验 1. 引言:给你的电脑装上“眼睛” 你有没有想过,让电脑像人一样“看懂”图片,并且能回答关于图片的任何问题?比如,你随手拍了一张办公桌的照片,电脑…

作者头像 李华