京东API接口实战:获取商品详情数据(价格、主图、详情图、评价)

273 阅读4分钟

在电商数据分析和系统集成领域,京东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接入准备

  1. 注册开发者账号 首先需要访问API开放平台注册开发者账号,完成企业或个人认证。

  2. 创建应用获取密钥 在控制台创建应用后,系统会分配给你以下关键信息:

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': } 二、获取商品基础信息

  1. 商品详情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)

三、获取商品图片数据

  1. 主图获取 商品主图通常包含多张不同角度的展示图,可以从返回的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可以为价格监控、竞品分析、商品推荐等应用场景提供可靠的数据支持。