news 2026/4/3 3:44:58

1688获得商品类目

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
1688获得商品类目

一、前置准备(必须完成)

和之前一致,这是调用所有 1688 开放 API 的前提,缺一不可:

  1. 访问1688 开放平台,注册开发者账号并完成实名认证(个人 / 企业均可)。
  2. 创建应用,获取核心凭证:app_key(应用 ID)、app_secret(应用密钥)。
  3. 为应用申请alibaba.category.get接口的调用权限(类目查询专用,免费申请)。
  4. 了解核心规则:接口请求需要生成MD5 签名,时间戳为 13 位毫秒级,避免请求过期。

二、核心实现:获取 1688 商品类目

1. 接口关键信息(聚焦类目获取)
  • 请求地址:https://gw.open.1688.com/openapi/param2/2/portals.open/api/getCategory
  • 请求方式:GET(更简单,适合新手)
  • 数据格式:JSON(返回结果易解析)
  • 频率限制:单应用 QPS≤10,日调用≤5 万次(类目更新慢,建议本地缓存 24 小时以上)
2. 完整 Python 代码(可直接运行)

该代码会拉取全量类目树,并以层级化格式打印,方便你查找目标类目及其 ID。

python

运行

import requests import hashlib import time # ---------------------- 配置区(替换为你自己的凭证) ---------------------- app_key = "你的_app_key" app_secret = "你的_app_secret" # ------------------------------------------------------------------------ # 接口请求地址 category_api_url = "https://gw.open.1688.com/openapi/param2/2/portals.open/api/getCategory" def generate_md5_sign(params, app_secret): """ 生成1688 API要求的MD5签名 规则:app_secret + 按字母序拼接的参数键值对 + app_secret,MD5加密后转大写 """ # 按参数名字母顺序排序 sorted_params = sorted(params.items()) # 拼接参数字符串(无分隔符,直接键值相连) param_str = ''.join([f"{k}{v}" for k, v in sorted_params]) # 构造签名原始字符串 sign_origin = app_secret + param_str + app_secret # 生成MD5签名并转大写 md5_obj = hashlib.md5(sign_origin.encode('utf-8')) return md5_obj.hexdigest().upper() def get_1688_categories(): """ 调用1688接口,获取完整商品类目树 """ # 1. 构造基础请求参数(接口要求的必填参数) base_params = { "method": "alibaba.category.get", # 固定接口方法名 "app_key": app_key, # 你的应用ID "timestamp": str(int(time.time() * 1000)), # 13位毫秒级时间戳 "format": "json", # 返回数据格式固定为json "v": "2.0", # 接口版本固定为2.0 "sign_method": "md5" # 签名方式固定为md5 } # 2. 生成签名并添加到参数中 base_params["sign"] = generate_md5_sign(base_params, app_secret) # 3. 发送GET请求 try: response = requests.get(category_api_url, params=base_params, timeout=30) response.raise_for_status() # 抛出HTTP请求错误(如404、500) return response.json() except requests.exceptions.RequestException as e: print(f"请求失败:{e}") return None def parse_and_print_categories(categories, level=0): """ 递归解析类目树,层级化打印类目信息(名称、ID、层级、是否叶子类目) :param categories: 类目列表(接口返回的children数组) :param level: 类目层级(用于缩进,提升可读性) """ for cat in categories: # 提取核心类目信息 cat_id = cat.get("categoryId", "未知ID") cat_name = cat.get("name", "未知名称") cat_level = cat.get("level", "未知层级") is_leaf = cat.get("isLeaf", False) # 是否为叶子类目(不可再下钻) leaf_tag = "[叶子类目]" if is_leaf else "[可下钻]" # 层级化打印 indent = " " * level print(f"{indent}[L{cat_level}] {cat_name}(ID:{cat_id}){leaf_tag}") # 递归打印子类目 if "children" in cat and cat["children"] and len(cat["children"]) > 0: parse_and_print_categories(cat["children"], level + 1) # ---------------------- 执行主流程 ---------------------- if __name__ == "__main__": # 1. 获取类目数据 category_result = get_1688_categories() if not category_result: print("未获取到类目数据") exit(1) # 2. 解析并打印类目(接口返回数据有固定结构) try: # 提取核心类目列表 category_list = category_result["result"]["categories"] print("=" * 80) print("1688商品类目树(层级化展示,可直接复制目标类目ID)") print("=" * 80) parse_and_print_categories(category_list) except KeyError as e: print(f"解析类目数据失败,缺少字段:{e}") print(f"接口返回完整数据:{category_result}")
3. 代码使用说明
  1. 替换配置区的app_keyapp_secret为你在开放平台获取的真实凭证。
  2. 安装依赖(若未安装):执行pip install requests
  3. 运行代码,控制台会输出层级化的类目列表,示例效果如下:

    plaintext

    [L1] 服装服饰(ID:10000)[可下钻] [L2] 女装(ID:10001)[可下钻] [L3] 上衣(ID:10002)[可下钻] [L4] T恤(ID:10003)[叶子类目] [L4] 衬衫(ID:10004)[叶子类目]
  4. 查找你需要的类目,复制对应的categoryId即可(后续调用榜单、商品列表等接口都会用到)。
4. 关键字段解释(新手必看)
字段名含义实用价值
categoryId类目唯一 ID后续接口的核心入参,必须准确
name类目中文名称用于识别类目,方便人工筛选
level类目层级1 级为顶级类目(如服装服饰),5 级为最细分类目
isLeaf是否为叶子类目true表示该类目无下级子类目,是最细分类,选品时常用

三、常见问题排查

  1. 签名错误(返回 "invalid sign")
    • 检查app_secret是否填写正确(不可多空格、少字符)。
    • 确认参数是否按字母序排序(代码已实现,无需手动修改)。
    • 时间戳是否为 13 位毫秒级(代码中time.time() * 1000已处理)。
  2. 权限不足(返回 403 Forbidden)
    • 未申请alibaba.category.get接口权限,需在开放平台应用的「权限管理」中补充申请并等待审核通过。
  3. 返回数据为空
    • 检查网络连接,或等待几分钟后重试(开放平台偶尔有临时波动)。
    • 确认账号已完成实名认证(未认证账号无法调用接口)。

总结

  1. 获取 1688 商品类目核心是调用alibaba.category.get接口,前提是完成开放平台的账号认证、应用创建和权限申请。
  2. 接口请求必须生成符合规则的 MD5 签名,否则会请求失败。
  3. 类目数据层级化递归解析,核心目标是提取categoryId,为后续调取榜单、商品数据打下基础。
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/3/27 16:01:57

把开源 Skills 集成到 LangGraph 项目

把开源 Skills 集成到 LangGraph 项目中,核心是先将开源 Skill 标准化封装为 LangGraph 可识别的“工具/子图”,再通过状态机编排调用逻辑。下面我会给你一套通用、可落地的完整流程,包含具体代码示例和适配不同类型开源 Skill 的方法。 一、集成前的核心准备 1. 明确开源 …

作者头像 李华
网站建设 2026/4/1 5:35:25

学霸同款8个降AIGC工具,千笔AI帮你降AI率

AI降重工具,助你轻松应对论文查重难题 在自考论文写作过程中,许多同学都会遇到一个共同的难题:论文的AIGC率过高、AI痕迹明显,导致查重率居高不下。这不仅影响论文成绩,更可能让辛苦撰写的成果被系统误判为抄袭。面对这…

作者头像 李华
网站建设 2026/3/29 15:38:15

关于 AI 的学习路线图

[!NOTE] 笔记说明 本系列笔记用于系统整理我在长期学习、实践与反思人工智能理论及其相关工具的使用过程中,逐步形成的一些结构性认识。这些内容将被持续维护于我的个人计算机学习笔记库中,并会随着理解的深化不断修订,而非一次性结论。 术语…

作者头像 李华
网站建设 2026/3/28 22:05:39

MyBatis mapper.xml 文件热加载功能技术实现方案

博主之前分析过:Arthas 本身不能直接热替换 MyBatis 的 mapper.xml 文件。但可以通过一些变通方法实现类似效果。以下是详细分析和解决方案: 主要限制 MyBatis 的 XML 加载机制:XML 文件通常在应用启动时被解析并编译为 MappedStatement 对象…

作者头像 李华
网站建设 2026/3/23 23:16:55

【小程序毕设全套源码+文档】基于微信小程序的校园选课小程序设计与实现(丰富项目+远程调试+讲解+定制)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

作者头像 李华