当前位置: 首页 > news >正文

基于Python淘宝商品详情(商品信息主图)API接口

基于 Python 实现淘宝商品详情(含主图)API 接口调用的完整方案,包含接口接入、数据解析、异常处理等核心内容。

注意:淘宝官方 API 需通过阿里开放平台申请权限,本文以通用开放接口为例,实际使用需遵循平台规范。

一、前期准备

  1. 阿里开放平台注册
    • 访问阿里开放平台注册开发者账号,创建应用,获取AppKeyAppSecret
    • 申请taobao.item.get(商品详情)接口权限(需审核)。
  2. 安装依赖库

bash

运行

pip install requests hmac hashlib urllib.parse # 核心依赖 pip install python-dotenv # 可选,管理环境变量

二、核心 API 调用代码

1. 基础配置(.env 文件,可选)

env

APP_KEY=你的AppKey APP_SECRET=你的AppSecret
2. 完整代码实现

python

运行

import requests import time import hmac import hashlib import urllib.parse from dotenv import load_dotenv # 若不用.env可删除 import os # 加载环境变量(可选) load_dotenv() class TaobaoItemAPI: """淘宝商品详情API调用类""" def __init__(self, app_key, app_secret): self.app_key = app_key self.app_secret = app_secret self.gateway_url = "https://eco.taobao.com/router/rest" # 正式环境网关 # 沙箱环境网关:https://gw.api.tbsandbox.com/router/rest def _generate_sign(self, params): """生成API签名(淘宝签名规则)""" # 1. 按参数名升序排序 sorted_params = sorted(params.items(), key=lambda x: x[0]) # 2. 拼接成key=value格式 sign_str = "" for k, v in sorted_params: if v: # 空值不参与签名 sign_str += f"{k}{v}" # 3. 拼接AppSecret并加密 sign_str = self.app_secret + sign_str + self.app_secret sign = hmac.new( self.app_secret.encode("utf-8"), sign_str.encode("utf-8"), hashlib.md5 ).hexdigest().upper() return sign def get_item_detail(self, num_iid, fields=None): """ 获取商品详情(含主图) :param num_iid: 商品ID(必填) :param fields: 需要返回的字段,默认返回核心字段 :return: 解析后的商品详情字典 """ # 默认返回字段(可根据需求扩展) if not fields: fields = ( "num_iid,title,pic_url,price,orginal_price,detail_url," "item_imgs,cat_name,brand_name,sell_count,stock" ) # 构造请求参数 params = { "method": "taobao.item.get", # 接口名称 "app_key": self.app_key, "format": "json", "v": "2.0", "timestamp": time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()), "sign_method": "md5", "num_iid": num_iid, "fields": fields } # 生成签名 params["sign"] = self._generate_sign(params) try: # 发送请求 response = requests.get( self.gateway_url, params=params, timeout=10, headers={"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64)"} ) response.raise_for_status() # 抛出HTTP异常 result = response.json() # 处理接口返回 if "error_response" in result: raise Exception(f"接口错误:{result['error_response']['msg']}") item = result["item_get_response"]["item"] return { "商品ID": item["num_iid"], "商品标题": item["title"], "商品主图": item["pic_url"], "商品价格": item["price"], "原价": item["orginal_price"], "商品链接": item["detail_url"], "销量": item.get("sell_count", 0), "库存": item.get("stock", 0), "分类名称": item.get("cat_name", ""), "品牌名称": item.get("brand_name", ""), "商品图片列表": [img["url"] for img in item.get("item_imgs", [])] } except requests.exceptions.RequestException as e: raise Exception(f"网络请求错误:{str(e)}") except Exception as e: raise Exception(f"获取商品详情失败:{str(e)}") # 示例调用 if __name__ == "__main__": # 初始化API实例 api = TaobaoItemAPI( app_key=os.getenv("APP_KEY"), # 或直接填写你的AppKey app_secret=os.getenv("APP_SECRET") # 或直接填写你的AppSecret ) # 调用接口(替换为实际商品ID) try: item_detail = api.get_item_detail(num_iid="1234567890") print("商品详情:") for key, value in item_detail.items(): print(f"{key}: {value}") # 单独获取主图 main_image_url = item_detail["商品主图"] print(f"\n商品主图URL:{main_image_url}") # 下载主图(可选) img_response = requests.get(main_image_url, timeout=10) with open("taobao_item_main_img.jpg", "wb") as f: f.write(img_response.content) print("主图已下载到本地:taobao_item_main_img.jpg") except Exception as e: print(f"错误:{str(e)}")

三、关键说明

1. 接口参数说明
参数名必选说明
num_iid商品 ID(淘宝商品链接中的 ID,如中的 1234567890)
fields需要返回的字段,可参考淘宝开放平台文档
2. 签名规则(核心)

淘宝 API 签名生成步骤:

  1. 将所有请求参数(除 sign 外)按参数名 ASCII 升序排序;
  2. 拼接成key1value1key2value2格式;
  3. 首尾拼接AppSecret,用 MD5 加密后转大写即为 sign。
3. 常见问题
  • 权限不足:需确保应用已申请taobao.item.get接口权限,且账号未被限流;
  • 签名错误:检查参数排序、编码、AppSecret 是否正确;
  • 商品 ID 无效:确认商品 ID 为有效淘宝商品 ID,且商品未下架;
  • 频率限制:淘宝 API 有调用频率限制,需控制调用速度(建议每秒不超过 10 次)。

四、扩展功能

  1. 批量获取商品详情:循环调用get_item_detail方法,注意添加延时避免限流;
  2. 主图批量下载:遍历商品列表,下载主图并按商品 ID 命名;
  3. 数据持久化:将商品详情存入 MySQL/Redis/MongoDB 等数据库;
  4. 异常重试:添加重试机制(如使用tenacity库),处理临时网络错误。

五、合规说明

  1. 调用淘宝 API 需遵守
  2. 商品数据仅可用于合法场景,不得擅自爬取、传播他人商品信息;
  3. 若无需官方 API,可考虑合规的电商数据服务商(需确认资质)。
http://www.cnnetsun.cn/news/3332.html

相关文章:

  • 28岁无车无房不敢结婚,要不要转行?如何赚外快,实现财富自由?
  • 安全渗透工程师入门最快需要多久?提供具体路线和学习框架
  • 如何开始漏洞赏金计划并成为漏洞挖掘猎手
  • 从零到 “黑客” 级!电脑小白耗时一年,成长为网络安全工程师的真实经历
  • 为什么建议计算机专业一定要打CTF比赛?一文解析参赛门槛和获奖收益!
  • 遇到ARP欺骗攻击,莫慌!教你三招抵御攻击!
  • Android轮盘选择器终极指南:从零开始构建流畅的3D选择体验
  • 创意新纪元:首尾帧生视频技术让静态图片“活“起来 [特殊字符]
  • LambdaCAN:CAN 总线时代的空燃比测量革新者
  • Wan2.2-T2V-A14B如何准确描绘分子结构变化?
  • 电商商家必看:用Wan2.2-T2V-A14B快速生成产品宣传视频
  • 终极D3KeyHelper指南:智能按键宏系统让暗黑3效率飙升200%
  • Photoshop图层导出终极指南:5个常见问题快速解决方案
  • AnyFlip下载器终极指南:简单三步将在线翻页书转为PDF永久保存
  • 2025多模态编辑革命:Qwen-Image-Edit-2509重构视觉创作逻辑
  • 终极指南:5步在IsaacLab中完美配置UR机器人与Robotiq夹爪
  • 12、技术问题解决与系统安全保障指南
  • 26、信息安全评估中的Kali Linux应用与攻击类型解析
  • 13、Kali Linux 安全与监控:防火墙、日志与文件检测
  • GLM-4.5系列开源模型震撼发布:重新定义智能代理技术标准
  • 原神帧率解锁终极指南:从60帧到极致流畅的完整解决方案
  • Topit窗口置顶大师:重塑你的多任务工作流
  • Ultimate ASI Loader完全指南:轻松为游戏注入无限可能
  • 3大核心功能深度解析:HandheldCompanion如何让掌机体验全面升级
  • PPO并行训练终极指南:多进程环境7倍加速实战
  • Flink监控体系实战:从零构建企业级运维平台
  • Log4j2 “核弹级”漏洞深度复盘:原理分析与企业级修复指南(含检测思路)
  • Python 进阶:揭秘 HLS 视频流的 AES-128 加密原理与逆向实战
  • 吊打面试官系列:Redis 为什么是单线程?如果你只回答“避免锁竞争”,那就挂了!
  • 完美解决 MySQL “Too many connections“ 报错:从参数优化到架构调整的全套方案