调用淘宝开放平台API获取店铺所有商品列表

简介: 本文详解如何调用淘宝开放平台API(如taobao.items.list.get)批量获取店铺商品信息,涵盖接口功能、授权准备(App Key/Secret、Access Token)、签名生成、分页调用及Python实战示例,助开发者高效安全接入。


在电商系统开发或数据分析场景中,有时需要批量获取淘宝店铺的所有商品信息。淘宝开放平台(Taobao Open Platform)提供了丰富的API接口供开发者使用,其中就包含获取店铺商品的接口。本文将详细介绍如何使用这个接口。

一、接口概述
淘宝开放平台提供了 taobao.items.list.get (或其他类似名称/功能) 的API,用于查询指定卖家的商品列表。通过此接口,开发者可以获取店铺商品的详细信息,如商品ID、标题、价格、图片链接、库存状态等。

核心功能点:

按卖家(店铺)维度查询商品
支持分页获取,应对商品数量大的情况
可筛选在线状态(在售、仓库中、售罄等)
返回丰富的商品基础信息
二、准备工作
在调用API前,需要完成以下步骤:

注册淘宝开放平台账号: 访问淘宝开放平台官网,注册成为开发者。
创建应用: 登录开发者控制台,创建一个新的应用。创建成功后,系统会分配给你三个关键凭证:
App Key:应用的唯一标识。
App Secret:用于签名验证的密钥,务必保密。
Access Token:代表用户授权访问资源的令牌。获取店铺商品通常需要卖家(店铺主)授权你的应用,授权成功后即可获得此Token。具体授权流程(如OAuth 2.0)请参考开放平台文档。
查阅API文档: 在开放平台文档中心找到 获取商品列表 或功能描述相似的API文档。仔细阅读其请求地址(URL)、请求方式(GET/POST)、必需的请求参数、可选参数以及返回结果的字段说明和数据结构(通常是JSON格式)。
三、调用接口详解
假设我们已获得有效的 App Key, App Secret, Access Token,并且目标店铺的卖家 nick 或 seller_id 已知。

  1. 基本请求参数
    调用接口时,以下参数通常是必需的:

method: API方法名,例如 taobao.item.list.get。
app_key: 你的应用 App Key。
session: 或 access_token,填写你获得的 Access Token。
timestamp: 请求发起的时间戳(格式如 yyyy-MM-dd HH:mm:ss)。
format: 响应格式,通常为 json。
v: API版本号,如 2.0。
sign_method: 签名方法,如 hmac。
fields: 指定需要返回的商品字段列表,用逗号分隔。例如:num_iid,title,price,pic_url,approve_status。请根据文档选择所需字段。
seller_id 或 nick: 指定要查询的店铺卖家的用户ID或昵称。
page_no: 当前页码(从1开始)。
page_size: 每页返回的商品数量(最大值需参照文档,通常不超过100)。

  1. 生成签名(Sign)
    淘宝API要求对请求参数进行签名验证以防止篡改。签名生成步骤一般如下:

排序: 将所有请求参数(包括 app_key, method, timestamp 等公共参数和 seller_id, fields 等业务参数,不包括 sign 本身)按照参数名的字典序升序排列。
拼接: 将排序后的参数名和参数值用 = 连接,参数对之间用 & 连接,形成一个长字符串。例如:app_key=123&fields=num_iid,title&method=taobao.item.list.get&...。
加密: 在拼接好的字符串前面加上你的 App Secret,后面也加上你的 App Secret,然后使用指定的签名方法(如 hmac,对应算法可能是 HMAC-SHA256)进行加密。
编码: 将加密得到的字节流进行Base64编码或十六进制转换(具体看文档要求),得到最终的 sign 值。
注意: 签名算法是安全调用的关键,务必严格按照文档实现。

  1. 发送请求
    将包含所有参数(包括计算得到的 sign)的请求发送到淘宝API的网关地址(如 https://eco.taobao.com/router/rest)。请求方式一般为 POST。

  2. 处理响应
    API会返回一个JSON格式的响应。需要关注的关键字段通常包括:

items_list_get_response: 或类似名称,表示响应的根节点。
items: 包含商品列表的数组。数组中的每个元素是一个商品对象,包含你在 fields 参数中指定的字段及其值。
total_results: 符合条件的商品总数(用于分页计算总页数)。
request_id: 请求的唯一ID,可用于排查问题。
code: 返回码。0 通常表示成功,非 0 表示错误(需根据文档查阅错误原因)。
msg: 返回消息,成功时为 null 或空字符串,失败时为错误描述。
分页处理: 如果 total_results 大于 page_size,则需要循环调用接口,递增 page_no 参数,直到获取所有商品。

四、Python 示例代码
以下是一个简化的Python示例,使用 requests 库调用API并处理分页(注意:需自行实现签名函数 generate_sign 和替换真实参数值):

import requests
import time
import hashlib
import hmac
import base64

def generate_sign(params, app_secret):

# 1. 参数排序 (按key升序)
sorted_params = sorted(params.items())
# 2. 拼接键值对 (key=value&...)
query_str = '&'.join([f'{k}={v}' for k, v in sorted_params])
# 3. 前后加Secret, 使用HMAC-SHA256加密 (示例, 具体算法看文档要求)
sign_str = app_secret + query_str + app_secret
signature = hmac.new(app_secret.encode('utf-8'), sign_str.encode('utf-8'), hashlib.sha256).digest()
# 4. Base64编码 (示例)
return base64.b64encode(signature).decode('utf-8')

你的应用信息

APP_KEY = 'your_app_key'
APP_SECRET = 'your_app_secret'
ACCESS_TOKEN = 'your_access_token'

API基础信息

API_URL = 'https://eco.taobao.com/router/rest'
METHOD = 'taobao.item.list.get' # 替换为实际API方法名
VERSION = '2.0'

请求参数 (基础 + 业务)

base_params = {
'method': METHOD,
'app_key': APP_KEY,
'session': ACCESS_TOKEN,
'timestamp': time.strftime('%Y-%m-%d %H:%M:%S', time.localtime()),
'format': 'json',
'v': VERSION,
'sign_method': 'hmac', # 根据文档选择
}
business_params = {
'fields': 'num_iid,title,price,pic_url,approve_status', # 所需字段
'seller_id': 'target_seller_id', # 目标店铺卖家ID
'page_no': 1,
'page_size': 100, # 每页数量 (按文档最大值设置)
}

all_items = []
page_no = 1
total_pages = None

while True:

# 合并参数
current_params = {**base_params, **business_params, 'page_no': page_no}
# 生成签名
sign = generate_sign(current_params, APP_SECRET)
current_params['sign'] = sign
# 发送POST请求
response = requests.post(API_URL, data=current_params)
resp_data = response.json()
# 检查响应
if 'error_response' in resp_data:
    code = resp_data['error_response']['code']
    msg = resp_data['error_response']['msg']
    print(f"API调用失败! Code: {code}, Msg: {msg}")
    break
# 获取响应数据 (注意根据实际API返回结构解析, 这里假设结构)
try:
    result = resp_data[f"{METHOD.replace('.', '_')}_response"]  # 假设响应根节点是方法名转换
    items = result.get('items', [])
    total = result.get('total_results', 0)
    all_items.extend(items)
    # 计算总页数 (如果是第一页)
    if total_pages is None:
        total_pages = (total + business_params['page_size'] - 1) // business_params['page_size']
    # 判断是否还有下一页
    if page_no >= total_pages:
        break
    page_no += 1
except KeyError as e:
    print(f"解析响应数据出错: {e}")
    print(resp_data)
    break

print(f"成功获取店铺商品总数: {len(all_items)}")

处理你的商品数据 all_items...

五、注意事项
权限与授权: 确保应用已获得卖家授权,并且应用的权限范围包含商品信息读取。
调用频率限制: 淘宝API对调用频率有严格限制(QPS),请遵守开放平台的限流规则,避免触发限流导致调用失败。需要在代码中做好流量控制(如添加延时)。
参数准确性: 严格按照文档要求传递参数,特别是 fields、seller_id 等关键参数。
签名安全: App Secret 是核心机密,不能在客户端或日志中暴露。签名算法必须正确实现。
错误处理: 代码中应包含完善的错误处理逻辑,处理网络异常、API返回错误、数据解析失败等情况。
文档更新: API接口和规则可能会更新,务必定期查阅最新的开放平台官方文档。
通过遵循上述步骤和注意事项,开发者可以稳定可靠地利用淘宝开放平台API获取店铺的所有商品数据,为后续的商品管理、数据分析等业务提供支持。

相关文章
|
6天前
|
人工智能 JSON 机器人
让龙虾成为你的“公众号分身” | 阿里云服务器玩Openclaw
本文带你零成本玩转OpenClaw:学生认证白嫖6个月阿里云服务器,手把手配置飞书机器人、接入免费/高性价比AI模型(NVIDIA/通义),并打造微信公众号“全自动分身”——实时抓热榜、AI选题拆解、一键发布草稿,5分钟完成热点→文章全流程!
10866 75
让龙虾成为你的“公众号分身” | 阿里云服务器玩Openclaw
|
6天前
|
人工智能 IDE API
2026年国内 Codex 安装教程和使用教程:GPT-5.4 完整指南
Codex已进化为AI编程智能体,不仅能补全代码,更能理解项目、自动重构、执行任务。本文详解国内安装、GPT-5.4接入、cc-switch中转配置及实战开发流程,助你从零掌握“描述需求→AI实现”的新一代工程范式。(239字)
3789 129
|
1天前
|
人工智能 Kubernetes 供应链
深度解析:LiteLLM 供应链投毒事件——TeamPCP 三阶段后门全链路分析
阿里云云安全中心和云防火墙已在第一时间上线相关检测与拦截策略!
1324 5
|
2天前
|
人工智能 自然语言处理 供应链
【最新】阿里云ClawHub Skill扫描:3万个AI Agent技能中的安全度量
阿里云扫描3万+AI Skill,发现AI检测引擎可识别80%+威胁,远高于传统引擎。
1254 2
|
12天前
|
人工智能 JavaScript API
解放双手!OpenClaw Agent Browser全攻略(阿里云+本地部署+免费API+网页自动化场景落地)
“让AI聊聊天、写代码不难,难的是让它自己打开网页、填表单、查数据”——2026年,无数OpenClaw用户被这个痛点困扰。参考文章直击核心:当AI只能“纸上谈兵”,无法实际操控浏览器,就永远成不了真正的“数字员工”。而Agent Browser技能的出现,彻底打破了这一壁垒——它给OpenClaw装上“上网的手和眼睛”,让AI能像真人一样打开网页、点击按钮、填写表单、提取数据,24小时不间断完成网页自动化任务。
2659 6