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


相关文章
|
4月前
|
JSON 安全 API
亚马逊商品列表API秘籍!轻松获取商品列表数据
亚马逊商品列表API(SP-API)提供标准化接口,支持通过关键词、分类、价格等条件搜索商品,获取ASIN、价格、销量等信息。采用OAuth 2.0认证与AWS签名,保障安全。数据以JSON格式传输,便于开发者批量获取与分析。
|
4月前
|
JSON 缓存 算法
如何通过API获取1688商品类目数据:技术实现指南
1688开放平台提供alibaba.category.get接口,支持获取全量商品类目树。RESTful架构,返回JSON数据,含类目ID、名称、层级等信息。需注册账号、创建应用并授权。请求需签名认证,QPS限10次,建议缓存更新周期≥24小时。
410 2
|
4月前
|
XML JSON API
苏宁商品详情API秘籍!轻松获取商品详情数据
苏宁商品详情API基于RESTful架构,支持JSON/XML格式,通过AppKey、AppSecret与签名三重认证,结合OAuth 2.0实现安全调用。开发者可获取商品名称、价格、销量、库存、促销等实时数据,适用于电商分析与商业智能。接口强制使用HTTPS协议,支持POST/GET请求,统一采用UTF-8编码,确保数据传输安全可靠。
|
4月前
|
安全 API
亚马逊商品详情 API 秘籍!轻松获取 SKU 属性数据
亚马逊商品详情API是官方接口,通过ASIN获取商品标题、价格、库存、评价等50余项数据,支持多站点查询。包含Product Advertising API与MWS两类,分别用于商品信息获取和卖家店铺管理,采用AWS4-HMAC-SHA256认证,保障请求安全。
|
4月前
|
缓存 监控 前端开发
顺企网 API 开发实战:搜索 / 详情接口从 0 到 1 落地(附 Elasticsearch 优化 + 错误速查)
企业API开发常陷参数、缓存、错误处理三大坑?本指南拆解顺企网双接口全流程,涵盖搜索优化、签名验证、限流应对,附可复用代码与错误速查表,助你2小时高效搞定开发,提升响应速度与稳定性。
|
4月前
|
JSON 算法 API
Python采集淘宝商品评论API接口及JSON数据返回全程指南
Python采集淘宝商品评论API接口及JSON数据返回全程指南
|
5月前
|
数据可视化 测试技术 API
从接口性能到稳定性:这些API调试工具,让你的开发过程事半功倍
在软件开发中,接口调试与测试对接口性能、稳定性、准确性及团队协作至关重要。随着开发节奏加快,传统方式已难满足需求,专业API工具成为首选。本文介绍了Apifox、Postman、YApi、SoapUI、JMeter、Swagger等主流工具,对比其功能与适用场景,并推荐Apifox作为集成度高、支持中文、可视化强的一体化解决方案,助力提升API开发与测试效率。
|
4月前
|
JSON API 数据安全/隐私保护
Python采集淘宝拍立淘按图搜索API接口及JSON数据返回全流程指南
通过以上流程,可实现淘宝拍立淘按图搜索的完整调用链路,并获取结构化的JSON商品数据,支撑电商比价、智能推荐等业务场景。
|
5月前
|
JSON 前端开发 API
如何调用体育数据足篮接口API
本文介绍如何调用体育数据API:首先选择可靠服务商并注册获取密钥,接着阅读文档了解基础URL、端点、参数及请求头,然后使用Python等语言发送请求、解析JSON数据,最后将数据应用于Web、App或分析场景,同时注意密钥安全、速率限制与错误处理。
573 152
|
4月前
|
人工智能 自然语言处理 测试技术
Apipost智能搜索:只需用业务语言描述需求,就能精准定位目标接口,API 搜索的下一代形态!
在大型项目中,API 数量庞大、命名不一,导致“找接口”耗时费力。传统工具依赖关键词搜索,难以应对语义模糊或命名不规范的场景。Apipost AI 智能搜索功能,支持自然语言查询,如“和用户登录有关的接口”,系统可理解语义并精准匹配目标接口。无论是新人上手、模糊查找还是批量定位,都能大幅提升检索效率,降低协作成本。从关键词到语义理解,智能搜索让开发者少花时间找接口,多专注核心开发,真正实现高效协作。

热门文章

最新文章

推荐镜像

更多