Python京东商品详情API接口采集概览
前言
京东开放平台提供了多种API接口用于获取商品详情信息,以下是主要的API接口概述及Python采集示例。
一、主要商品详情API接口
1. 商品基础信息接口
接口名称: jd.union.open.goods.query
功能: 获取商品标题、价格、图片、库存等基础信息
2. 商品详情接口
接口名称: jd.union.open.goods.detail.query
功能: 获取商品详细描述、规格参数、售后政策等丰富信息
3. 商品SKU接口
接口名称: jd.union.open.goods.skus.query
功能: 获取商品的所有SKU信息(颜色、尺寸等变体)
二、Python采集示例代码
1. 准备工作
import requests |
|
import hashlib |
|
import time |
|
class JDAPI: |
|
def __init__(self, app_key, app_secret): |
|
self.app_key = app_key |
|
self.app_secret = app_secret |
|
self.base_url = "https://api.jd.com/routerjson" |
|
def _generate_sign(self, params): |
|
# 参数排序并拼接 |
|
sorted_params = sorted(params.items(), key=lambda x: x[0]) |
|
query_string = '&'.join([f"{k}={v}" for k, v in sorted_params]) + self.app_secret |
|
# MD5加密生成签名 |
|
return hashlib.md5(query_string.encode('utf-8')).hexdigest().upper() |
|
def call_api(self, method, params): |
|
# 公共参数 |
|
common_params = { |
|
'app_key': self.app_key, |
|
'method': method, |
|
'timestamp': str(int(time.time())), |
|
'format': 'json', |
|
'v': '2.0', |
|
'sign_method': 'md5' |
|
} |
|
# 合并参数 |
|
all_params = {**common_params, **params} |
|
# 生成签名 |
|
all_params['sign'] = self._generate_sign(all_params) |
|
# 发送请求 |
|
response = requests.get(self.base_url, params=all_params) |
|
return response.json() |
2. 获取商品基础信息
def get_goods_info(api, sku_id): |
|
params = { |
|
'sku_ids': sku_id, # 商品ID,多个用逗号分隔 |
|
'fields': 'sku_id,name,price,image_path,stock_state' # 需要返回的字段 |
|
} |
|
result = api.call_api('jd.union.open.goods.query', params) |
|
return result |
|
# 使用示例 |
|
api = JDAPI('your_app_key', 'your_app_secret') |
|
goods_info = get_goods_info(api, '100012345678') |
|
print(goods_info) |
3. 获取商品详细信息
def get_goods_detail(api, sku_id): |
|
params = { |
|
'sku_id': sku_id, |
|
'fields': 'sku_id,name,price,image_path,stock_state,description,after_service,spec_info' |
|
} |
|
result = api.call_api('jd.union.open.goods.detail.query', params) |
|
return result |
|
# 使用示例 |
|
goods_detail = get_goods_detail(api, '100012345678') |
|
print(goods_detail) |
4. 获取商品SKU信息
def get_goods_skus(api, sku_id): |
|
params = { |
|
'sku_id': sku_id, |
|
'fields': 'sku_id,name,price,image_path,color,size,stock_state' |
|
} |
|
result = api.call_api('jd.union.open.goods.skus.query', params) |
|
return result |
|
# 使用示例 |
|
goods_skus = get_goods_skus(api, '100012345678') |
|
print(goods_skus) |
三、返回数据示例
1. 商品基础信息响应
{ |
|
"code": 200, |
|
"message": "success", |
|
"data": { |
|
"goods_response": { |
|
"sku_id": "100012345678", |
|
"name": "华为Mate 50 Pro 5G手机", |
|
"price": 5999.00, |
|
"image_path": "https://img10.360buyimg.com/n1/s450x450_jfs/t1/123456/78/12345/123456/12345678/1234567890abcdef.jpg", |
|
"stock_state": 1 |
|
} |
|
} |
|
} |
2. 商品详细信息响应
{ |
|
"code": 200, |
|
"message": "success", |
|
"data": { |
|
"goods_detail_response": { |
|
"sku_id": "100012345678", |
|
"name": "华为Mate 50 Pro 5G手机", |
|
"price": 5999.00, |
|
"description": "<p>华为Mate 50 Pro 5G手机,采用6.74英寸OLED屏幕...</p>", |
|
"after_service": "全国联保,享受三包服务", |
|
"spec_info": { |
|
"颜色": ["曜金黑", "冰霜银", "流光紫"], |
|
"内存": ["8GB+128GB", "8GB+256GB", "12GB+512GB"] |
|
} |
|
} |
|
} |
|
} |
作者:ID_18007905473