×

Python代码获取京东商品描述 API 接口(item_get_desc)实战指南

admin admin 发表于2025-10-19 17:19:55 浏览109 评论0

抢沙发发表评论

在电商领域,商品描述是影响消费者购买决策的重要因素之一。京东作为国内知名的电商平台,提供了丰富的 API 接口供开发者使用,其中 item_get_desc 接口可用于获取商品的详细描述信息。本文将详细介绍如何使用 Python 调用京东的 item_get_desc 接口,获取商品的详细描述信息。

一、前期准备

(一)注册京东开放平台账号

访问京东开放平台官网,注册开发者账号并完成实名认证。这是使用京东 API 的必要步骤

(二)创建应用并获取 API 权限

  1. 登录京东开放平台,进入 “我的应用” 页面。
  2. 点击 “创建应用”,填写应用名称、描述等信息。
  3. 在应用的 “接口管理” 中,找到 item_get_desc 接口,申请调用权限。
  4. 申请通过后,获取 App KeyApp Secret,这是调用 API 的必要凭证

二、接口调用实战

(一)接口说明

item_get_desc 接口用于获取商品的详细描述信息,包括商品的基本信息、价格、库存、规格等。以下是接口的基本参数和返回值说明。
请求参数
  • num_iid:商品的 ID(必填)。
  • main_sku_id:商品的主 SKU ID(可选)。
  • app_key:应用的 API 密钥。
  • timestamp:时间戳。
  • sign:签名,用于验证请求的合法性
返回值
  • description:商品的详细描述信息。
  • images:商品的图片列表。
  • videos:商品的视频列表。

(二)Python代码示例

以下是使用 Python 调用 item_get_desc 接口的完整代码示例:
Python
复制
import requestsimport hashlibimport timeclass JD_API:
    def __init__(self, app_key, app_secret):
        self.app_key = app_key
        self.app_secret = app_secret
        self.api_url = "https://api.jd.com/routerjson"

    def sign(self, params):
        """生成签名"""
        sorted_params = sorted(params.items())
        sign_str = self.app_secret        for k, v in sorted_params:
            sign_str += f"{k}{v}"
        sign_str += self.app_secret        return hashlib.md5(sign_str.encode()).hexdigest().upper()

    def get_item_desc(self, num_iid, main_sku_id=None):
        """调用 item_get_desc 接口获取商品描述信息"""
        params = {
            "method": "jd.item.get_desc",
            "app_key": self.app_key,
            "timestamp": time.strftime("%Y-%m-%d %H:%M:%S"),
            "v": "2.0",
            "format": "json",
            "num_iid": num_iid,
        }

        if main_sku_id:
            params["main_sku_id"] = main_sku_id

        params["sign"] = self.sign(params)

        try:
            response = requests.get(self.api_url, params=params)
            response.raise_for_status()
            data = response.json()

            if "error_response" in data:
                error = data["error_response"]
                return {
                    "success": False,
                    "error_code": error["code"],
                    "error_msg": error["msg"]
                }

            return {
                "success": True,
                "data": data["jd_item_get_desc_response"]["item"]
            }

        except requests.exceptions.RequestException as e:
            return {
                "success": False,
                "error_msg": f"请求异常: {str(e)}"
            }if __name__ == "__main__":
    APP_KEY = "your_app_key"
    APP_SECRET = "your_app_secret"

    jd_api = JD_API(APP_KEY, APP_SECRET)

    result = jd_api.get_item_desc(
        num_iid="123456789",
        main_sku_id="123456789"
    )

    if result["success"]:
        print("获取商品描述信息成功:")
        print(result["data"])
    else:
        print(f"获取商品描述信息失败: {result.get('error_msg', '未知错误')}")
        if "error_code" in result:
            print(f"错误代码: {result['error_code']}")

(三)代码解析

  1. 签名生成:京东 API 要求对请求参数进行签名,以确保请求的安全性。签名算法是将所有参数按字母顺序排序后,拼接 app_secret,然后使用 MD5 算法生成签名
  2. 请求参数:除了 API 特定参数外,还需要传入公共参数如 app_keytimestamp
  3. 错误处理:代码中包含了对 HTTP 请求异常和 API 返回错误的处理
  4. 字段过滤:通过 fields 参数可以指定需要返回的字段,减少数据传输量

三、返回数据解析

(一)成功响应示例

JSON
复制
{
  "jd_item_get_desc_response": {
    "item": {
      "description": "商品详细描述信息",
      "images": [
        "图片链接1",
        "图片链接2"
      ],
      "videos": [
        "视频链接1",
        "视频链接2"
      ]
    }
  }}

(二)失败响应示例

JSON
复制
{
  "error_response": {
    "code": "400",
    "msg": "Invalid parameter"
  }}

四、常见问题及解决方法

(一)签名错误

问题:签名错误,通常是 sign 参数不正确。
解决方法
  • 检查 app_secret 是否正确。
  • 确保参数排序正确,按照字母顺序排列。
  • 确保签名算法正确,使用 MD5 算法

(二)权限不足

问题:权限不足,通常是 code 返回 403
解决方法
  • 检查是否已申请 item_get_desc 接口的调用权限。
  • 确保应用的权限未被限制

(三)参数错误

问题:请求参数错误,通常是 code 返回 400
解决方法
  • 检查请求参数是否符合 API 的要求。
  • 确保所有必填参数都已正确传递

五、总结

通过本文的介绍,你应该已经掌握了如何使用 Python 代码调用京东的 item_get_desc 接口,获取商品的详细描述信息。在实际开发中,注意错误处理和日志记录,可以提高开发效率和代码的稳定性。


群贤毕至

访客