以下是小红书笔记评论 API 的标准接口定义、Python 调用示例与完整 JSON 返回参考,覆盖主评论 + 子评论结构,可直接用于开发与数据解析。
一、接口基础信息(v2 标准)
- 接口地址 :
https://api.xiaohongshu.com/v2/notes/{note_id}/comments - 请求方式 :
GET - 鉴权方式 :
access_token(OAuth2.0) - 分页 :
cursor游标分页(替代传统 page) - 频率限制:默认每分钟 ≤ 100 次
必选参数
note_id:笔记 ID(从 URL 提取,如649c46ab000000002702ad36)access_token:授权令牌
可选参数
cursor:上一页返回的游标(首次传空)page_size:每页数量(默认 20,最大 100)sort:排序(time时间 /hot热度)
二、Python 调用示例
python
运行
import requests
import json
def get_xhs_note_comments(note_id, access_token, cursor="", page_size=20):
"""
获取小红书笔记评论
:param note_id: 笔记ID
:param access_token: 授权令牌
:param cursor: 分页游标
:param page_size: 每页数量
:return: 评论JSON数据
"""
url = f"https://api.xiaohongshu.com/v2/notes/{note_id}/comments"
headers = {
"Authorization": f"Bearer {access_token}",
"Content-Type": "application/json",
"User-Agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 16_0 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/16.0 Mobile/15E148 Safari/604.1"
}
params = {
"cursor": cursor,
"page_size": page_size,
"sort": "time"
}
try:
response = requests.get(url, headers=headers, params=params)
response.raise_for_status()
return response.json()
except requests.exceptions.RequestException as e:
print(f"请求失败: {e}")
return None
# 使用示例
if __name__ == "__main__":
NOTE_ID = "649c46ab000000002702ad36"
ACCESS_TOKEN = "your_access_token_here"
comments = get_xhs_note_comments(NOTE_ID, ACCESS_TOKEN)
if comments:
print(json.dumps(comments, indent=2, ensure_ascii=False))
三、完整 JSON 返回参考(含子评论)
json
{
"code": 0,
"msg": "success",
"data": {
"total": 128,
"cursor": "651234567890abcdef123456",
"has_more": true,
"comments": [
{
"comment_id": "651234567890abcdef123456",
"content": "这款产品真的太好用了,强烈推荐!",
"create_time": 1712345678,
"like_count": 125,
"reply_count": 3,
"is_top": false,
"user": {
"user_id": "5f8d3a3a000000000102e3a2",
"nickname": "美妆达人小A",
"avatar": "https://sns-avatar-qc.xhscdn.com/avatar/5f8d3a3a000000000102e3a2.jpg",
"is_followed": false,
"is_official": false
},
"sub_comments": [
{
"comment_id": "651234567890abcdef123457",
"content": "请问敏感肌可以用吗?",
"create_time": 1712345680,
"like_count": 15,
"user": {
"user_id": "5d3e6b2a000000000101c3f5",
"nickname": "敏感肌小C",
"avatar": "https://sns-avatar-qc.xhscdn.com/avatar/5d3e6b2a000000000101c3f5.jpg"
}
},
{
"comment_id": "651234567890abcdef123458",
"content": "@敏感肌小C 可以的,我也是敏感肌,用着很温和~",
"create_time": 1712345690,
"like_count": 8,
"user": {
"user_id": "5f8d3a3a000000000102e3a2",
"nickname": "美妆达人小A",
"avatar": "https://sns-avatar-qc.xhscdn.com/avatar/5f8d3a3a000000000102e3a2.jpg"
}
}
]
},
{
"comment_id": "651234567890abcdef123459",
"content": "求链接!",
"create_time": 1712345700,
"like_count": 42,
"reply_count": 0,
"is_top": false,
"user": {
"user_id": "6a7b8c9d000000000103d4g6",
"nickname": "种草机小B",
"avatar": "https://sns-avatar-qc.xhscdn.com/avatar/6a7b8c9d000000000103d4g6.jpg"
},
"sub_comments": []
}
]
}
}
四、关键字段说明
表格
| 字段 | 类型 | 说明 |
|---|---|---|
code |
int | 状态码(0 = 成功) |
msg |
string | 状态信息 |
data.total |
int | 评论总数 |
data.cursor |
string | 下一页游标(用于翻页) |
data.has_more |
bool | 是否有更多数据 |
comments[].comment_id |
string | 评论唯一 ID |
comments[].content |
string | 评论内容 |
comments[].create_time |
int | 发布时间戳 |
comments[].like_count |
int | 点赞数 |
comments[].reply_count |
int | 回复数 |
comments[].user |
object | 评论用户信息 |
comments[].sub_comments |
array | 子评论(回复)列表 |
五、常见错误码
401:access_token无效或过期403:无权限访问该笔记评论429:请求频率超限(需限流重试)500:服务器内部错误
六、合规与风控提示
- 必须通过官方开放平台申请权限,禁止爬虫逆向接口。
- 严格遵守频率限制,使用缓存与指数退避重试。
- 用户数据脱敏,不得泄露隐私信息。
- 数据仅用于合规场景(如舆情分析、内容运营)。
需要我基于这个返回结构,帮你写一个Python 解析脚本,自动提取所有评论(含子评论)并保存为 CSV/Excel 吗?