在電商數據分析和系統集成領域,京東API提供了強大的數據獲取能力。本文將詳細介紹如何通過京東開放平臺的API接口獲取商品詳情數據,包括價格信息、主圖、詳情圖以及商品評價等核心數據。
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可以為價格監控、競品分析、商品推薦等應用場景提供可靠的數據支持。