以下是使用Python采集商品详情数据时,常见电商平台(淘宝、京东、拼多多)的JSON接口返回数据参考,以及对应的采集代码示例和注意事项。
一、淘宝商品详情API返回JSON参考
1. 基础商品信息
| { |
| "code": 200, |
| "msg": "success", |
| "data": { |
| "item": { |
| "id": "123456789", |
| "title": "2025新款智能手表旗舰版", |
| "price": "1299.00", |
| "original_price": "1599.00", |
| "shop_name": "XX品牌旗舰店", |
| "main_image": "https://img.alicdn.com/xxx_main.jpg", |
| "detail_url": "https://item.taobao.com/item.htm?id=123456789" |
| } |
| } |
| } |
2. 完整商品详情(含SKU、促销)
| { |
| "code": 200, |
| "data": { |
| "item": { |
| "id": "123456789", |
| "title": "2025新款智能手表旗舰版", |
| "price": "1299.00", |
| "skus": [ |
| { |
| "sku_id": "sku_001", |
| "price": "1299.00", |
| "properties": "颜色:黑色;尺寸:标准版", |
| "stock": 150 |
| } |
| ], |
| "coupon_info": { |
| "amount": "100.00", |
| "condition": "满1000元可用" |
| }, |
| "promotions": [ |
| { "type": "满减", "desc": "满1000减100" } |
| ] |
| } |
| } |
| } |
二、京东商品详情API返回JSON参考
1. 基础商品信息
| { |
| "code": 200, |
| "message": "success", |
| "data": { |
| "goods_response": { |
| "sku_id": "100012345678", |
| "name": "华为Mate 50 Pro 5G手机", |
| "price": 5999.00, |
| "original_price": 6999.00, |
| "image_path": "https://img10.360buyimg.com/n1/s450x450_jfs/t1/123456/78/12345/123456/12345678/1234567890abcdef.jpg" |
| } |
| } |
| } |
2. 商品SKU详情
| { |
| "code": 200, |
| "data": { |
| "goods_skus_response": { |
| "sku_id": "100012345678", |
| "sku_list": [ |
| { |
| "sku_id": "100012345678", |
| "name": "华为Mate 50 Pro 5G手机 曜金黑 8GB+128GB", |
| "price": 5999.00, |
| "stock_state": 1 |
| } |
| ] |
| } |
| } |
| } |
四、Python采集代码示例
1. 淘宝商品采集(使用requests
)
| import requests |
| import hashlib |
| import time |
| |
| def get_taobao_item(app_key, app_secret, item_id): |
| url = "https://api.taobao.com/router/rest" |
| params = { |
| "method": "taobao.item.get", |
| "app_key": app_key, |
| "timestamp": time.strftime("%Y-%m-%d %H:%M:%S"), |
| "format": "json", |
| "v": "2.0", |
| "num_iid": item_id, |
| "fields": "id,title,price,skus" |
| } |
| params["sign"] = generate_taobao_sign(params, app_secret) |
| response = requests.get(url, params=params) |
| return response.json() |
| |
| def generate_taobao_sign(params, app_secret): |
| sorted_params = sorted(params.items(), key=lambda x: x[0]) |
| sign_str = app_secret + "".join([f"{k}{v}" for k, v in sorted_params]) + app_secret |
| return hashlib.md5(sign_str.encode("utf-8")).hexdigest().upper() |
| |
| # 调用示例 |
| data = get_taobao_item("your_app_key", "your_app_secret", "123456789") |
| print(data) |
2. 京东商品采集(使用requests
)
| import requests |
| import hashlib |
| import time |
| |
| def get_jd_item(app_key, app_secret, sku_id): |
| url = "https://api.jd.com/routerjson" |
| params = { |
| "method": "jd.item.get", |
| "app_key": app_key, |
| "access_token": "your_access_token", |
| "timestamp": time.strftime("%Y-%m-%d %H:%M:%S"), |
| "v": "2.0", |
| "sku_id": sku_id |
| } |
| params["sign"] = generate_jd_sign(params, app_secret) |
| response = requests.get(url, params=params) |
| return response.json() |
| |
| def generate_jd_sign(params, app_secret): |
| sorted_params = sorted(params.items(), key=lambda x: x[0]) |
| params_str = "&".join([f"{k}={v}" for k, v in sorted_params]) |
| sign_str = f"{app_secret}{params_str}{app_secret}" |
| return hashlib.md5(sign_str.encode("utf-8")).hexdigest().upper() |
| |
| # 调用示例 |
| data = get_jd_item("your_app_key", "your_app_secret", "100012345678") |
| print(data) |