全部
常见问题
产品动态
精选推荐

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

管理 管理 编辑 删除

在电商数据分析和系统集成领域,京东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': 'https://api.jd.com/routerjson'

}

二、获取商品基础信息

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可以为价格监控、竞品分析、商品推荐等应用场景提供可靠的数据支持。


请登录后查看

65035d961458 最后编辑于2025-04-27 13:22:40

快捷回复
回复
回复
回复({{post_count}}) {{!is_user ? '我的回复' :'全部回复'}}
排序 默认正序 回复倒序 点赞倒序

{{item.user_info.nickname ? item.user_info.nickname : item.user_name}} LV.{{ item.user_info.bbs_level }}

作者 管理员 企业

{{item.floor}}# 同步到gitee 已同步到gitee {{item.is_suggest == 1? '取消推荐': '推荐'}}
{{item.is_suggest == 1? '取消推荐': '推荐'}}
沙发 板凳 地板 {{item.floor}}#
{{item.user_info.title || '暂无简介'}}
附件

{{itemf.name}}

{{item.created_at}}  {{item.ip_address}}
{{item.like_count}}
{{item.showReply ? '取消回复' : '回复'}}
删除
回复
回复

{{itemc.user_info.nickname}}

{{itemc.user_name}}

回复 {{itemc.comment_user_info.nickname}}

附件

{{itemf.name}}

{{itemc.created_at}}
{{itemc.like_count}}
{{itemc.showReply ? '取消回复' : '回复'}}
删除
回复
回复
查看更多
47
{{like_count}}
{{collect_count}}
添加回复 ({{post_count}})

相关推荐

快速安全登录

使用微信扫码登录
{{item.label}} 加精
{{item.label}} {{item.label}} 板块推荐 常见问题 产品动态 精选推荐 首页头条 首页动态 首页推荐
取 消 确 定
回复
回复
问题:
问题自动获取的帖子内容,不准确时需要手动修改. [获取答案]
答案:
提交
bug 需求 取 消 确 定

微信登录/注册

切换手机号登录

{{ bind_phone ? '绑定手机' : '手机登录'}}

{{codeText}}
切换微信登录/注册
暂不绑定
CRMEB客服

CRMEB咨询热线 咨询热线

400-8888-794

微信扫码咨询

CRMEB开源商城下载 源码下载 CRMEB帮助文档 帮助文档
返回顶部 返回顶部
CRMEB客服