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"
}
}
]
}
}


相关文章
|
2月前
|
JSON 算法 API
Python采集淘宝商品评论API接口及JSON数据返回全程指南
Python采集淘宝商品评论API接口及JSON数据返回全程指南
|
2月前
|
JSON API 数据安全/隐私保护
Python采集淘宝拍立淘按图搜索API接口及JSON数据返回全流程指南
通过以上流程,可实现淘宝拍立淘按图搜索的完整调用链路,并获取结构化的JSON商品数据,支撑电商比价、智能推荐等业务场景。
|
2月前
|
Cloud Native 算法 API
Python API接口实战指南:从入门到精通
🌟蒋星熠Jaxonic,技术宇宙的星际旅人。深耕API开发,以Python为舟,探索RESTful、GraphQL等接口奥秘。擅长requests、aiohttp实战,专注性能优化与架构设计,用代码连接万物,谱写极客诗篇。
Python API接口实战指南:从入门到精通
|
2月前
|
JSON 算法 API
Python中的json模块:从基础到进阶的实用指南
本文深入解析Python内置json模块的使用,涵盖序列化与反序列化核心函数、参数配置、中文处理、自定义对象转换及异常处理,并介绍性能优化与第三方库扩展,助你高效实现JSON数据交互。(238字)
356 4
|
3月前
|
JSON 缓存 供应链
电子元件 item_search - 按关键字搜索商品接口深度分析及 Python 实现
本文深入解析电子元件item_search接口的设计逻辑与Python实现,涵盖参数化筛选、技术指标匹配、供应链属性过滤及替代型号推荐等核心功能,助力高效精准的电子元器件搜索与采购决策。
|
3月前
|
数据采集 机器学习/深度学习 人工智能
Python:现代编程的首选语言
Python:现代编程的首选语言
289 102
|
3月前
|
数据采集 机器学习/深度学习 算法框架/工具
Python:现代编程的瑞士军刀
Python:现代编程的瑞士军刀
314 104
|
3月前
|
人工智能 自然语言处理 算法框架/工具
Python:现代编程的首选语言
Python:现代编程的首选语言
260 103
|
3月前
|
机器学习/深度学习 人工智能 数据挖掘
Python:现代编程的首选语言
Python:现代编程的首选语言
193 82
|
2月前
|
Python
Python编程:运算符详解
本文全面详解Python各类运算符,涵盖算术、比较、逻辑、赋值、位、身份、成员运算符及优先级规则,结合实例代码与运行结果,助你深入掌握Python运算符的使用方法与应用场景。
179 3

推荐镜像

更多