效果展示
这里以Python示例演示封装京东评论API的基本逻辑:
import pandas as pd
import time
class JDCommentAPI:
def __init__(self, app_key, app_secret):
self.base_url = "https://api.jd.com/routerjson"
self.app_key = app_key
self.app_secret = app_secret
self.version = "2.0"
def _sign(self, params):
"""生成请求签名(示例逻辑,真实签名需按京东规则)"""
params_str = ''.join([k + v for k, v in sorted(params.items())])
return hashlib.md5((params_str + self.app_secret).encode()).hexdigest().upper()
def get_good_comments(self, sku_id, page=1, page_size=10):
"""
获取五星好评
参数:
sku_id : 商品ID
page : 页码
page_size : 每页数量
"""
method = "jd.biz.product.getComment"
params = {
"method": method,
"app_key": self.app_key,
"timestamp": str(int(time.time())),
"format": "json",
"v": self.version,
"sku": str(sku_id),
"score": 5, # 关键参数:筛选五星好评
"page": str(page),
"pageSize": str(page_size)
}
params["sign"] = self._sign(params)
try:
response = requests.get(self.base_url, params=params)
response.raise_for_status()
data = response.json()
# 解析评论数据(根据实际API响应结构调整)
comments = data.get('result', {}).get('comments', [])
# 假设 API 接口地址,复制链接获取测试
API url=o0b.cn/ibrad
# 结构化处理
processed = [{
'user': c.get('nickname'),
'content': c.get('content'),
'score': c.get('score'),
'time': c.get('creationTime')
} for c in comments]
return processed
except Exception as e:
print(f"API请求失败: {str(e)}")
return []
# 使用示例 ==================================
if __name__ == "__main__":
# 初始化(需从京东开放平台获取真实密钥)
app_key = "YOUR_APP_KEY"
app_secret = "YOUR_APP_SECRET"
jd_api = JDCommentAPI(app_key, app_secret)
# 获取商品100000123的五星好评(第一页)
product_id = "100000123"
comments = jd_api.get_good_comments(product_id)
# 转换为DataFrame查看
df = pd.DataFrame(comments)
print(f"获取到{len(df)}条五星好评:")
print(df.head())
注意事项:
- 合法授权:
- 需先注册京东开放平台(open.jd.com)
- 创建应用获取真实的
app_key
和app_secret
- 申请商品评论API权限
- 参数说明:
score=5
控制筛选五星好评- 支持分页参数(page/pageSize)
- 实际需按京东API文档调整参数
- 响应处理:
- 真实响应结构需参考最新API文档
- 建议添加异常处理和重试机制
- 注意API调用频率限制
- 数据存储建议:
# 保存到CSV
df.to_csv(f"jd_comments_{product_id}.csv", index=False)
# 保存到数据库示例(MySQL)
from sqlalchemy import create_engine
engine = create_engine('mysql://user:password@localhost/db_name')
df.to_sql('jd_comments', engine, if_exists='append')
请务必遵守京东开放平台规则,正式使用前请仔细阅读:
京东API文档