在小红书中,若想一键获取笔记评论并实时查看作品数据,可通过官方API、第三方工具及非官方技术方案实现,以下是一些具体的方法和工具推荐:
官方API方案(推荐)
-
步骤:
- 注册开发者账号:访问小红书开放平台,注册成为开发者。
- 创建应用:提交企业资质或个人身份信息,创建应用并等待审核。
- 获取凭证:审核通过后,获取app_id、app_secret及access_token。
- 调用API接口 :使用获取的凭证,调用小红书官方提供的API接口,如
https://api.xiaohongshu.com/v2/notes/{note_id}/comments
,来获取指定笔记的评论数据。
-
参数说明:
note_id
:笔记的唯一标识符。page
:分页页码,默认为1。page_size
:每页返回评论数,默认为10。timestamp
:请求时间戳,用于签名验证。sign
:签名,通过app_id、app_secret、时间戳及参数生成MD5加密。
-
Python示例代码:
python
python
import requests
import hashlib
import time
def get_comments(note_id, access_token, page=1, page_size=10):
url = f"https://api.xiaohongshu.com/v2/notes/{note_id}/comments"
timestamp = str(int(time.time()))
# 生成签名(示例,需替换为实际app_id和app_secret)
sign_str = "your_app_id" + note_id + str(page) + str(page_size) + timestamp + "your_app_secret"
sign = hashlib.md5(sign_str.encode('utf-8')).hexdigest()
params = {
"access_token": access_token,
"page": page,
"limit": page_size,
"timestamp": timestamp,
"sign": sign
}
response = requests.get(url, params=params)
return response.json() if response.status_code == 200 else None
# 示例调用
note_id = "649c46ab000000002702ad36"
access_token = "your_access_token"
comments_data = get_comments(note_id, access_token)
if comments_data:
for comment in comments_data["data"]["comments"]:
print(f"评论内容: {comment['content']}")
print(f"用户昵称: {comment['user_nickname']}")
print(f"点赞数: {comment['like_count']}")
第三方工具
- 新榜矩阵通:提供账号详细数据,超100种数据维度一目了然,智能监测并分析账号关键数据,自动化生成图表。
- 千瓜数据:主打品牌种草分析,能追踪竞品投放策略、用户互动词云、爆文内容结构等,提供大盘数据,帮助用户了解行业整体趋势和竞争对手表现。
- 新红数据:新榜旗下的小红书数据分析工具,有免费部分,适合新手。可查看垂类数据榜单、进行笔记收录查询等,数据维度丰富,包括粉丝画像、内容趋势、竞品分析等。
- 蝉妈妈:专注抖音、快手、小红书平台的带货数据监测,可监测直播间销量、商品转化率、达人佣金比例等。其亮点在于实时直播间监控、爆品趋势预测、达人带货力评估,作品内容数据分析等。
- 灰豚数据:对新手博主较为友好,能监控当前爆文、热门品牌和达人榜单,可通过设置条件筛选低粉爆文,帮助用户找到具有潜力的内容模式和热门产品。
非官方技术方案(备用)
- 逆向工程接口:通过分析小红书的网页端或移动端接口,找到获取评论数据的接口地址和请求参数,然后模拟这些请求来获取数据。但这种方法存在法律风险,可能违反小红书的用户协议,因此建议优先使用官方API。
- Python爬虫代码示例(仅供学习参考,请确保遵守相关法律法规和平台规定):
python
python
import requests
from urllib.parse import urlencode
import time
class XiaohongshuCommentScraper:
def __init__(self):
self.headers = {
"User-Agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 16_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148",
"X-Request-ID": "api.comment_list",
"Content-Type": "application/json"
}
self.base_url = "https://www.xiaohongshu.com/api/sns/note/v1/comment_list"
def get_comments(self, note_id, max_pages=5):
comments = []
for page in range(1, max_pages+1):
params = {
"note_id": note_id,
"sort": "newest",
"page": page,
"page_size": 20
}
try:
response = requests.get(self.base_url, headers=self.headers, params=urlencode(params))
data = response.json()
if data.get('errcode') != 0:
break
comments.extend([{
"id": c["id"],
"user": c["user"]["nickname"],
"content": c["content"],
"like_count": c["like_count"],
"create_time": c["create_time"]
} for c in data.get('data', {}).get('comments', [])])
time.sleep(1.5) # 反爬延迟
except Exception as e:
print(f"Error on page {page}: {str(e)}")
break
return comments
# 示例调用
scraper = XiaohongshuCommentScraper()
note_id = "649c46ab000000002702ad36"
comments = scraper.get_comments(note_id, max_pages=3)
print(f"成功抓取{len(comments)}条评论")