在电商数据分析和系统集成领域,京东API提供了强大的数据获取能力。本文将详细介绍如何通过京东开放平台的API接口获取商品详情数据,包括价格信息、主图、详情图以及商品评价等核心数据。
item_get 获得JD商品详情 item_search 按关键字搜索商品 item_search_img 按图搜索京东商品(拍立淘) item_search_shop 获得店铺的所有商品 item_history_price 获取商品历史价格信息 item_recommend 获取推荐商品列表 buyer_order_list 获取购买到的商品订单列表 buyer_order_datail 获取购买到的商品订单详情 upload_img 上传图片到JD item_review 获得JD商品评论 cat_get 获得jd商品分类 一、京东API接入准备
-
注册开发者账号 首先需要访问API开放平台注册开发者账号,完成企业或个人认证。
-
创建应用获取密钥 在控制台创建应用后,系统会分配给你以下关键信息:
App Key:应用唯一标识
App Secret:用于签名的密钥
Access Token:访问令牌
python
复制
下载
示例配置
JD_CONFIG = { 'app_key': 'your_app_key', 'app_secret': 'your_app_secret', 'access_token': 'your_access_token', 'api_url': } 二、获取商品基础信息
- 商品详情API 京东的商品详情接口可以通过商品SKU ID获取基本信息。
python
复制
下载
import requests import hashlib import time
def get_jd_product_detail(sku_id): method = 'jd.union.open.goods.promotiongoodsinfo.query' timestamp = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime())
params = {
'goodsReq': {
'skuIds': [sku_id],
'fields': 'sku_name,sku_price,image_url,coupon_info'
}
}
# 构造签名
sign_str = f'{JD_CONFIG["app_secret"]}access_token{JD_CONFIG["access_token"]}app_key{JD_CONFIG["app_key"]}method{method}timestamp{timestamp}v2.0{JD_CONFIG["app_secret"]}'
sign = hashlib.md5(sign_str.encode()).hexdigest().upper()
payload = {
'method': method,
'app_key': JD_CONFIG['app_key'],
'access_token': JD_CONFIG['access_token'],
'timestamp': timestamp,
'v': '2.0',
'sign': sign,
'param_json': json.dumps(params)
}
response = requests.post(JD_CONFIG['api_url'], data=payload)
return response.json()
2. 解析返回数据 成功调用后会返回JSON格式数据,包含:
商品名称(sku_name)
京东价(sku_price)
主图URL(image_url)
优惠信息(coupon_info)
三、获取商品图片数据
- 主图获取 商品主图通常包含多张不同角度的展示图,可以从返回的image_url字段获取。
python
复制
下载
def extract_product_images(product_data): images = [] if 'image_info' in product_data: image_list = product_data['image_info']['image_list'] for img in image_list: images.append({ 'url': img['url'], 'type': 'main' # 主图标识 }) return images 2. 详情图获取 商品详情图需要调用专门的详情API:
python
复制
下载
def get_jd_product_desc(sku_id): method = 'jd.union.open.goods.bigfield.query' params = { 'skuIds': sku_id, 'fields': 'wareQD,wdesc' } # ... 构造签名和请求类似前面示例 response = requests.post(JD_CONFIG['api_url'], data=payload) data = response.json()
# 解析详情图
desc_images = []
if 'wareQD' in data:
# 使用正则提取详情图中的图片URL
import re
pattern = re.compile(r'src="(https?://[^"]+\.(jpg|png|jpeg))"', re.I)
matches = pattern.finditer(data['wareQD'])
for match in matches:
desc_images.append(match.group(1))
return desc_images
四、获取商品价格信息 京东的价格体系较为复杂,包含多种价格类型:
python
复制
下载
def parse_price_info(product_data): price_info = { 'jd_price': product_data.get('priceInfo', {}).get('price'), 'original_price': product_data.get('priceInfo', {}).get('originPrice'), 'plus_price': product_data.get('priceInfo', {}).get('plusPrice'), # PLUS会员价 'discount': product_data.get('priceInfo', {}).get('discount'), 'coupons': [] }
# 解析优惠券信息
if 'couponInfo' in product_data:
for coupon in product_data['couponInfo']['couponList']:
price_info['coupons'].append({
'discount': coupon['discount'],
'quota': coupon['quota'],
'time_range': f"{coupon['useStartTime']}-{coupon['useEndTime']}"
})
return price_info
五、获取商品评价数据 京东评价API可以获取商品的好评率、评价数量等数据:
python
复制
下载
def get_jd_product_comments(sku_id, page=1, page_size=10): method = 'jd.union.open.goods.comments.query' params = { 'skuId': sku_id, 'pageNo': page, 'pageSize': page_size, 'type': 1 # 1:好评 2:中评 3:差评 4:晒图 } # ... 构造签名和请求
response = requests.post(JD_CONFIG['api_url'], data=payload)
data = response.json()
comments = []
if 'comments' in data:
for comment in data['comments']:
comments.append({
'user': comment['nickname'],
'content': comment['content'],
'score': comment['score'],
'time': comment['creationTime'],
'images': [img['url'] for img in comment['images']] if 'images' in comment else []
})
return {
'good_rate': data.get('goodRate'),
'total_count': data.get('commentsCount'),
'comments': comments
}
六、完整数据获取流程 python
复制
下载
def get_full_product_info(sku_id): # 1. 获取基础信息 base_info = get_jd_product_detail(sku_id)
# 2. 获取详情数据
desc_images = get_jd_product_desc(sku_id)
# 3. 获取评价数据
comments = get_jd_product_comments(sku_id)
# 整合所有数据
full_data = {
'base_info': base_info,
'price_info': parse_price_info(base_info),
'images': {
'main_images': extract_product_images(base_info),
'desc_images': desc_images
},
'comments': comments
}
return full_data
七、注意事项与优化建议 频率限制:京东API有严格的调用频率限制,建议添加适当的延迟和缓存机制
错误处理:完善各种错误情况的处理逻辑
数据缓存:对不常变动的数据(如商品详情)进行本地缓存
异步处理:对于大量数据获取,考虑使用异步请求提高效率
合规使用:严格遵守京东API使用协议,不进行违规数据采集
结语 通过京东开放平台API,开发者可以合法合规地获取丰富的商品数据。本文介绍了从基础信息到价格、图片、评价等完整的数据获取流程,实际应用中可根据需求进行扩展和优化。正确使用这些API可以为价格监控、竞品分析、商品推荐等应用场景提供可靠的数据支持。