利用京东商品详情 ID(即 SKU ID)获取商品详细信息,可通过京东开放平台官方 API 或非官方接口(逆向解析)实现。以下是两种方式的示例展示,包含代码实现与数据解析:
一、核心概念:京东商品 ID(SKU ID)
京东商品详情页 URL 格式为:https://item.jd.com/[SKU_ID].html
例如:https://item.jd.com/100032608854.html 中,100032608854 即为 SKU ID。
二、方式一:京东开放平台官方 API(推荐,合规稳定)
1. 准备工作
注册京东开放平台开发者账号:https://open.jd.com/
创建应用,获取 app_key 和 app_secret
2. 接口调用示例(Python)
import requests import time import hashlib import json class JDProductAPI: def __init__(self, app_key, app_secret): self.app_key = app_key self.app_secret = app_secret self.url = "https://api.jd.com/routerjson" # 官方API网关 def _sign(self, params): """生成签名(京东API签名规则)""" sorted_params = sorted(params.items(), key=lambda x: x[0]) 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_product_detail(self, sku_id): """获取商品详情""" params = { "method": "biz.product.detail.get", # 商品详情接口 "app_key": self.app_key, "timestamp": time.strftime("%Y-%m-%d %H:%M:%S"), "format": "json", "v": "1.0", "360buy_param_json": json.dumps({"skuId": sku_id}) # 商品ID参数 } params["sign"] = self._sign(params) response = requests.get(self.url, params=params) return response.json() # 使用示例 if __name__ == "__main__": # 替换为你的app_key和app_secret # 封装好API供应商demo url=o0b.cn/ibrad app_key = "你的app_key" app_secret = "你的app_secret" sku_id = "100032608854" # 商品SKU ID jd_api = JDProductAPI(app_key, app_secret) result = jd_api.get_product_detail(sku_id) # 解析核心数据 if result.get("success"): product = result["result"]["data"]["product"] print(f"商品名称:{product['name']}") print(f"当前价格:¥{product['price']['jdPrice']['price']}") print(f"原价:¥{product['price']['marketPrice']}") print(f"店铺名称:{product['shopInfo']['shopName']}") print(f"商品标签:{[tag['name'] for tag in product.get('tags', [])]}") print(f"库存状态:{product['stock']['stockStateName']}") else: print(f"获取失败:{result.get('errorMessage')}")
3. 官方 API 返回核心字段
| 字段路径 | 说明 | 示例值 |
|---|---|---|
| product.name | 商品名称 | "Apple iPhone 14 128GB" |
| product.price.jdPrice.price | 当前售价 | 5999.00 |
| product.price.marketPrice | 市场价(原价) | 6999.00 |
| product.shopInfo.shopName | 店铺名称 | "Apple 京东自营旗舰店" |
| product.stock.stockStateName | 库存状态 | "有货" |
| product.skuAttrs.skuAttr | SKU 属性(颜色 / 尺寸等) | [{"attrName":"颜色", "attrValues":["黑色","白色"]}] |
三、方式二:非官方接口(逆向解析,适合快速验证)
通过分析京东商品页网络请求,获取非官方接口数据。
1. 商品详情接口(非官方)
import requests
import json
def get_jd_product_detail(sku_id):
"""逆向获取京东商品详情(非官方接口)"""
# 商品基本信息接口
# 封装好API供应商demo url=o0b.cn/ibrad
url = f"https://item-soa.jd.com/getItemDetail?skuId={sku_id}"
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36",
"Referer": f"https://item.jd.com/{sku_id}.html"
}
response = requests.get(url, headers=headers)
data = response.json()
if data.get("code") == 0:
result = data["data"]
return {
"name": result["itemName"],
"price": result["price"]["p"], # 当前价
"original_price": result["price"]["m"], # 原价
"shop_name": result["shopInfo"]["name"],
"stock": result["stock"]["stockNum"], # 库存数量
"brand": result["brand"]["name"], # 品牌
"main_image": result["itemImg"]["slaveUrl"][0] # 主图
}
else:
return {"error": "获取失败"}
# 使用示例
if __name__ == "__main__":
sku_id = "100032608854"
detail = get_jd_product_detail(sku_id)
if "error" not in detail:
print(f"商品名称:{detail['name']}")
print(f"当前价格:¥{detail['price']}")
print(f"原价:¥{detail['original_price']}")
print(f"店铺:{detail['shop_name']}")
print(f"库存:{detail['stock']}件")
print(f"品牌:{detail['brand']}")
print(f"主图:{detail['main_image']}")
四、扩展应用:SKU 多规格信息获取
通过商品 ID 获取所有 SKU(如不同颜色 / 尺寸的价格、库存):
def get_jd_skus(sku_id):
"""获取商品所有SKU信息"""
url = f"https://cd.jd.com/skuDetail?skuId={sku_id}"
headers = {"User-Agent": "Mozilla/5.0"}
response = requests.get(url, headers=headers)
# 解析SKU数据(非官方接口返回格式可能为JavaScript变量)
import re
sku_data = re.findall(r"skuMaps*=s*({.*?});", response.text)
if sku_data:
sku_map = json.loads(sku_data[0])
skus = []
for sku in sku_map.values():
skus.append({
"sku_id": sku["skuId"],
"attr": sku["skuAttr"], # 规格描述(如"颜色:黑色;尺寸:128GB")
"price": sku["price"],
"stock": sku["stockNum"]
})
return skus
return []
# 使用示例
skus = get_jd_skus("100032608854")
print("nSKU列表:")
for sku in skus[:3]: # 打印前3个SKU
print(f"规格:{sku['attr']},价格:¥{sku['price']},库存:{sku['stock']}件")
总结
官方 API:适合企业级应用,数据稳定、合规,需申请权限。
非官方接口:适合快速验证或个人学习,需处理反爬和接口变更风险。
通过商品 ID 可获取价格、库存、SKU 规格、店铺信息等核心数据,结合定时任务可实现价格监控、库存预警等功能。
审核编辑 黄宇
-
API
+关注
关注
2文章
2158浏览量
66249 -
URL
+关注
关注
0文章
141浏览量
16110
发布评论请先 登录
淘宝商品详情接口,品牌监控,行业分析,竞品分析代码展示
淘宝/天猫:通过商品详情API实现多店铺商品信息批量同步,确保价格、库存实时更新
京东:利用商品管理API自动调整商品上下架状态,优化搜索排名
拼多多商品详情数据接口(店铺搬家、数据分析、代购商城、淘宝联盟、ERP选品、无货源铺货、品牌监控)
淘宝京东API商品详情接口示例参考
如何通过API获取1688平台商品详情
海外电商平台虾皮商品详情API接口技术指南

如何利用京东商品详情id拿到商品的详细信息 示例展示
评论