jd 商品评论Api接口 全解析指南

以下是通过京东开放平台合法获取商品评论数据的完整解决方案,涵盖接口调用、数据解析、异常处理及合规性管理等核心环节:

一、官方 API 合规接入

1. 开发者认证与权限申请

步骤:

访问 京东平台,注册账号并创建应用,获取 AppKey 和 AppSecret。

申请商品评论相关接口权限:

基础权限:jd.item_review(商品评论列表)需通过 “数据服务” 类目审核。

高级权限:jd.item_review_picture(评论图片)、jd.item_review_video

配置应用回调 URL(非必填,但可用于接收异步通知)。

代码示例(Python):

# coding:utf-8

"""

Compatible for python2.x and python3.x

requirement: pip install requests

"""

from __future__ import print_function

import requests

# 请求示例 url 默认请求参数已经做URL编码

# 封装好API供应商demo url=o0b.cn/ibrad, wechat id: TaoxiJd 复制链接获取测试

url = "jd/item_review/?key=<您自己的apiKey>&secret=<您自己的apiSecret>&num_iid=71619129750&page=1&sort=&is_sku=false"

headers = {

    "Accept-Encoding": "gzip",

    "Connection": "close"

}

if __name__ == "__main__":

    r = requests.get(url, headers=headers)

    json_obj = r.json()

    print(json_obj)

2. 核心接口调用与参数解析

接口选择:

接口名称 功能描述 核心参数 返回字段示例

jd.item_review 获取商品评论列表(含内容、时间、用户昵称) sku_id(商品 ID) rate_content、rate_date、display_user_nick

参数设置:

params = {

    'method': 'jd.item_review',

    'sku_id': '123456789',  # 商品ID

    'page': 1,  # 当前页码

    'page_size': 10,  # 每页数量

    'sort_type': '1',  # 排序方式(1=按时间倒序,2=按点赞数降序)

    'timestamp': '2025-05-05 12:00:00'

}

二、数据获取与异常处理

1. 接口调用与响应处理

请求发送:

response = client.execute(params)

if response.get('code') != '0':

    raise ValueError(f"API调用失败,错误码:{response['code']},错误信息:{response['message']}")

数据解析:

reviews = response['result']['comments']

for review in reviews:

    print(f"评论内容:{review['rate_content']}")

    print(f"评论时间:{review['rate_date']}")

    print(f"买家昵称:{review['display_user_nick']}")

重试逻辑:

max_retries = 3

for _ in range(max_retries):

    try:

        response = client.execute(params)

        break

    except Exception as e:

        print(f"请求失败,重试中... 错误信息:{str(e)}")

else:

    raise RuntimeError("多次重试后仍失败")

三、数据质量保障

1. 分页与全量数据获取

分页逻辑:

total_pages = response['result']['total_pages']

for page in range(1, total_pages + 1):

    params['page'] = page

    response = client.execute(params)

    # 处理当前页数据

增量更新:

last_fetch_time = get_last_fetch_time()  # 从数据库或缓存获取上次抓取时间

params['start_time'] = last_fetch_time

response = client.execute(params)

# 处理新增评论

update_last_fetch_time()  # 更新上次抓取时间

四、合规性与风险控制

1. 法律合规性

禁止行为:

绕过京东反爬机制(如 IP 封禁、验证码)。

批量抓取用户隐私数据(如完整昵称、联系方式)。

将数据用于竞品分析、价格监控等商业用途(需获得京东授权)。

合规建议:

使用官方 API 时,遵守《京东开放平台服务协议》,每日调用量不超过 10 万次。

数据存储需符合《个人信息保护法》,对敏感字段(如用户 ID)进行脱敏处理。

2. 反爬规避策略

五、性能优化与缓存策略

1. 缓存机制

本地缓存:

import redis

cache = redis.Redis(host='localhost', port=6379, db=0)

cache_key = f"jd_reviews_{sku_id}_{page}"

cached_data = cache.get(cache_key)

if cached_data:

    reviews = json.loads(cached_data)

else:

    reviews = client.execute(params)

    cache.setex(cache_key, 3600, json.dumps(reviews))  # 缓存1小时

CDN 加速:

将评论图片、视频等静态资源通过 CDN 分发,减少服务器压力。

2. 异步处理

多线程 / 异步请求:

import concurrent.futures

def fetch_reviews(page):

    params['page'] = page

    return client.execute(params)

with concurrent.futures.ThreadPoolExecutor() as executor:

    futures = [executor.submit(fetch_reviews, page) for page in range(1, total_pages + 1)]

    for future in concurrent.futures.as_completed(futures):

        reviews = future.result()

        # 处理数据

六、替代方案:第三方数据服务商

若官方 API 无法满足需求,可考虑以下合规途径:

数据聚合平台:

蝉妈妈:提供商品评论情感分析、关键词云等增值服务,需签署商业合作协议。

情报通:支持评论数据批量导出,按调用量计费。

代运营服务商:

火蝠电商:通过京东官方授权,提供店铺评论数据抓取服务(需企业资质审核)。

易亚电商:支持评论数据 API 对接,按接口调用次数收费。

总结

方案类型 技术难度 合规性 数据完整性 成本

官方 API 低 高 完整 免费 / 按量付费

抓包 + 逆向 高 低 完整 设备 / 人力成本

第三方服务商 低 中 部分 年费 / 调用费

对于大规模数据需求,可结合第三服务商实现成本与效率的平衡。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容