Python采集京东商品评论API接口示例,json数据返回

简介: 下面是一个使用Python采集京东商品评论的完整示例,包括API请求、JSON数据解析

Python采集京东商品评论API接口示例

下面是一个使用Python采集京东商品评论的完整示例,包括API请求、JSON数据解析和反爬处理。

完整代码示例

python
import requests
import json
import time
import random
from urllib.parse import quote
def get_jd_comments(product_id, page=0, page_size=10):
"""
    获取京东商品评论
    :param product_id: 商品ID
    :param page: 页码(从0开始)
    :param page_size: 每页评论数
    :return: 评论数据JSON
    """
# 京东评论API URL
    url = f"https://club.jd.com/comment/productPageComments.action"
# 请求参数
    params = {
"callback": "fetchJSON_comment98",  # 回调函数名
"productId": product_id,
"score": 0,  # 0=全部,1=差评,2=中评,3=好评,5=追加评论
"sortType": 5,  # 排序方式 5=推荐排序,6=时间排序
"page": page,
"pageSize": page_size,
"isShadowSku": 0,
"fold": 1  # 1=过滤短评,0=不过滤
    }
# 请求头,模拟浏览器访问
    headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36",
"Referer": f"https://item.jd.com/{product_id}.html",
    }
try:
# 发送请求
        response = requests.get(url, params=params, headers=headers, timeout=10)
        response.raise_for_status()
# 处理回调函数包裹的JSON数据
        json_str = response.text[len("fetchJSON_comment98("):-2]
# 解析JSON数据
        comment_data = json.loads(json_str)
# 随机延迟,避免请求过于频繁
        time.sleep(random.uniform(1, 3))
return comment_data
except Exception as e:
print(f"获取评论失败: {e}")
return None
def parse_comments(comment_data):
"""
    解析评论数据
    :param comment_data: 原始评论数据
    :return: 结构化评论列表
    """
if not comment_data or comment_data.get("code") != "0":
return []
    comments = comment_data.get("comments", [])
    result = []
for comment in comments:
        item = {
"id": comment.get("id"),
"content": comment.get("content"),
"score": comment.get("score"),
"creation_time": comment.get("creationTime"),
"nickname": comment.get("nickname"),
"product_color": comment.get("productColor"),
"product_size": comment.get("productSize"),
"useful_vote": comment.get("usefulVoteCount"),
"images": [img.get("imgUrl") for img in comment.get("images", [])],
"videos": [video.get("videoUrl") for video in comment.get("videos", [])],
"after_comment": comment.get("afterUserComment", {}).get("content")
        }
        result.append(item)
return result
if __name__ == "__main__":
# 示例商品ID (iPhone 15)
    product_id = "100065474274"
# 获取第一页评论,每页10条
    comment_data = get_jd_comments(product_id, page=0, page_size=10)
if comment_data:
# 打印基本信息
print(f"商品ID: {product_id}")
print(f"总评论数: {comment_data['data'].get('totalCount')}")
print(f"好评数: {comment_data['data'].get('goodCount')}")
print(f"中评数: {comment_data['data'].get('generalCount')}")
print(f"差评数: {comment_data['data'].get('poorCount')}")
# 解析并打印评论
        comments = parse_comments(comment_data)
print("\n评论示例:")
for idx, comment in enumerate(comments[:3], 1):  # 只打印前3条作为示例
print(f"\n评论{idx}:")
print(f"用户: {comment['nickname']}")
print(f"评分: {'★' * comment['score']}")
print(f"时间: {comment['creation_time']}")
print(f"内容: {comment['content']}")
if comment['images']:
print(f"图片: {len(comment['images'])}张")
if comment['after_comment']:
print(f"追加评论: {comment['after_comment']}")
else:
print("未能获取评论数据")

JSON数据示例

以下是京东API返回的典型JSON数据结构(已格式化):

json
{
"code": "0",
"msg": "success",
"data": {
"productId": "100065474274",
"score": 4.9,
"totalCount": 50000,
"goodCount": 48000,
"generalCount": 1500,
"poorCount": 500,
"afterCount": 800,
"videoCount": 200,
"hotCommentTagStatistics": [
{
"id": "1",
"name": "物流快",
"count": 12000
},
{
"id": "2",
"name": "正品保障",
"count": 10000
}
],
"comments": [
{
"id": "123456789",
"guid": "abcdef-12345",
"content": "手机很好用,系统流畅,拍照清晰",
"creationTime": "2023-10-15 10:30:22",
"isTop": false,
"referenceId": "987654321",
"referenceName": "Apple iPhone 15",
"score": 5,
"status": 1,
"title": "非常满意",
"usefulVoteCount": 150,
"uselessVoteCount": 2,
"userImage": "misc.360buyimg.com/user/head/1.jpg",
"userLevelId": "6",
"userProvince": "北京",
"nickname": "jd_123456789",
"productColor": "黑色",
"productSize": "256GB",
"images": [
{
"id": "111111",
"imgUrl": "img10.360buyimg.com/n1/s450x450_jfs/t1/123456/1/2345/123456/5e8a1a1bE12345678/1234567890abcdef.jpg"
}
],
"afterUserComment": {
"id": 888888,
"content": "已解决您反馈的问题",
"created": "2023-10-18 09:20:30"
}
}
]
}
}


相关文章
|
8月前
|
JSON 缓存 算法
如何通过API获取1688商品类目数据:技术实现指南
1688开放平台提供alibaba.category.get接口,支持获取全量商品类目树。RESTful架构,返回JSON数据,含类目ID、名称、层级等信息。需注册账号、创建应用并授权。请求需签名认证,QPS限10次,建议缓存更新周期≥24小时。
|
8月前
|
JSON 安全 API
亚马逊商品列表API秘籍!轻松获取商品列表数据
亚马逊商品列表API(SP-API)提供标准化接口,支持通过关键词、分类、价格等条件搜索商品,获取ASIN、价格、销量等信息。采用OAuth 2.0认证与AWS签名,保障安全。数据以JSON格式传输,便于开发者批量获取与分析。
|
8月前
|
XML JSON API
苏宁商品详情API秘籍!轻松获取商品详情数据
苏宁商品详情API基于RESTful架构,支持JSON/XML格式,通过AppKey、AppSecret与签名三重认证,结合OAuth 2.0实现安全调用。开发者可获取商品名称、价格、销量、库存、促销等实时数据,适用于电商分析与商业智能。接口强制使用HTTPS协议,支持POST/GET请求,统一采用UTF-8编码,确保数据传输安全可靠。
|
9月前
|
数据采集 机器学习/深度学习 人工智能
Python:现代编程的首选语言
Python:现代编程的首选语言
1542 102
|
9月前
|
数据采集 机器学习/深度学习 算法框架/工具
Python:现代编程的瑞士军刀
Python:现代编程的瑞士军刀
497 104
|
9月前
|
人工智能 自然语言处理 算法框架/工具
Python:现代编程的首选语言
Python:现代编程的首选语言
387 103
|
9月前
|
机器学习/深度学习 人工智能 数据挖掘
Python:现代编程的首选语言
Python:现代编程的首选语言
407 82
|
8月前
|
Python
Python编程:运算符详解
本文全面详解Python各类运算符,涵盖算术、比较、逻辑、赋值、位、身份、成员运算符及优先级规则,结合实例代码与运行结果,助你深入掌握Python运算符的使用方法与应用场景。
513 3
|
8月前
|
数据处理 Python
Python编程:类型转换与输入输出
本教程介绍Python中输入输出与类型转换的基础知识,涵盖input()和print()的使用,int()、float()等类型转换方法,并通过综合示例演示数据处理、错误处理及格式化输出,助你掌握核心编程技能。
737 3
|
8月前
|
并行计算 安全 计算机视觉
Python多进程编程:用multiprocessing突破GIL限制
Python中GIL限制多线程性能,尤其在CPU密集型任务中。`multiprocessing`模块通过创建独立进程,绕过GIL,实现真正的并行计算。它支持进程池、队列、管道、共享内存和同步机制,适用于科学计算、图像处理等场景。相比多线程,多进程更适合利用多核优势,虽有较高内存开销,但能显著提升性能。合理使用进程池与通信机制,可最大化效率。
552 3