一、两条路径:官方 API vs 第三方采集
| 维度 | 官方开放平台 API | 第三方采集方案(如 xhs 项目) |
|---|
| 适用对象 | 企业/认证开发者 | 个人开发者、中小团队 |
| 权限门槛 | 需企业资质审核,周期数周 | 无门槛,注册即用 |
| 数据合规性 | ✅ 完全合规 | ⚠️ 仅限公开数据,需自律 |
| 调用频率 | 官方限制,稳定性高 | 需自行控制频率 |
| 接口地址 | https://open.xiaohongshu.com/api/note/detail | 基于 Web 端请求封装 |
二、官方 API 完整解析
1. 接入前提
小红书开放平台 → 实名认证 → 创建应用 → 申请 red.note.detail.get 权限 → 审核通过 → 获得 app_key + app_secret
⚠️ 笔记详情 API 不对个人开发者开放,仅限通过企业资质审核的合作方。
2. 鉴权机制(双重鉴权)
| 鉴权方式 | 说明 |
|---|
| HMAC-SHA256 签名 | 对参数按 ASCII 升序排序,拼接 key=value 字符串,用 app_secret 生成 sign 字段 |
| Access Token | 通过 OAuth2.0 获取,用于个性化查询(如判断当前用户是否点赞) |
| 时间戳校验 | timestamp 与服务器偏差不超过 ±5 分钟,防重放攻击 |
签名生成逻辑(Python):
pythonimport hmac, hashlib, time
def generate_sign(app_secret, params):
sorted_params = sorted(params.items(), key=lambda x: x[0])
sign_str = "&".join([f"{k}={v}" for k, v in sorted_params])
return hmac.new(
app_secret.encode(),
sign_str.encode(),
hashlib.sha256
).hexdigest()
3. 请求参数
| 参数 | 类型 | 必填 | 说明 |
|---|
app_key | String | ✅ | 应用唯一标识 |
sign | String | ✅ | HMAC-SHA256 签名 |
timestamp | Long | ✅ | 当前时间戳(秒级) |
access_token | String | ❌ | 用户授权令牌,个性化查询需要 |
note_id | String | ✅ | 笔记唯一标识 |
fields | String | ❌ | 筛选字段,如 title,content,like_count |
include_comments | Bool | ❌ | 是否包含评论列表 |
4. 返回数据结构
json{
"code": 0,
"msg": "success",
"data": {
"note_id": "648a7b2f0000000012345678",
"title": "夏日穿搭|平价T恤合集",
"desc": "这几件T恤真的太好穿了...",
"category": "fashion",
"tags": ["夏日穿搭", "平价T恤", "学生党"],
"media": {
"images": ["https://xxx.xiaohongshu.com/xxx/1.jpg"],
"video": null
},
"author": {
"user_id": "12345678",
"nickname": "穿搭小能手",
"avatar": "https://xxx.xiaohongshu.com/xxx/avatar.jpg",
"is_verified": true
},
"interaction": {
"like_count": 12580,
"collect_count": 3620,
"comment_count": 890,
"share_count": 120
},
"location": {"name": "上海市徐汇区", "latitude": 31.197, "longitude": 121.436},
"status": "published",
"is_commercial": false
}
}
5. Python 调用示例
pythonimport requests, time, hmac, hashlib
APP_KEY = "your_app_key"
APP_SECRET = "your_app_secret"
NOTE_ID = "63f5a8a1000000001f03c4a5"
def get_note_detail(note_id, access_token=None):
url = "https://openapi.xiaohongshu.com/v2/note/detail"
timestamp = str(int(time.time()))
params = {
"app_key": APP_KEY,
"note_id": note_id,
"timestamp": timestamp,
"access_token": access_token or ""
}
params["sign"] = generate_sign(APP_SECRET, params)
headers = {"Content-Type": "application/json"}
resp = requests.get(url, params=params, headers=headers, timeout=10)
return resp.json()
result = get_note_detail(NOTE_ID)
print(result["data"]["title"]) # 笔记标题
print(result["data"]["interaction"]["like_count"]) # 点赞数
三、第三方采集方案(xhs 项目)
如果无法申请官方 API,可使用开源项目 https://gitcode.com/gh_mirrors/xh/xhs,基于 Web 端请求封装,零门槛上手。
快速开始
bashpip install xhs
核心代码
pythonfrom xhs import XhsClient
client = XhsClient(cookie="你的Cookie")
# 1. 搜索笔记
results = client.search(keyword="早C晚A", page=1, page_size=20)
for item in results["items"][:3]:
print(item["title"], item["likes_count"])
# 2. 获取笔记详情
note = client.get_note_by_id("笔记ID")
print(note["title"], note["desc"][:100], note["like_count"])
# 3. 获取用户全部笔记
user_notes = client.get_user_notes("用户ID")
for n in user_notes[:5]:
print(n["title"], n["like_count"], n["collect_count"])
# 4. 获取评论
comments = client.get_note_comments("笔记ID")
搜索接口(无需 Cookie)
pythonimport requests
def search_notes(keyword, page=1):
url = "https://www.xiaohongshu.com/api/sns/web/v1/search/notes"
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) ...",
"Referer": "https://www.xiaohongshu.com/"
}
params = {
"keyword": keyword,
"page": page,
"page_size": 20,
"sort": "general" # hot=按热度
}
resp = requests.get(url, headers=headers, params=params, timeout=10)
return resp.json()["data"]["items"]
四、数据应用方案
| 场景 | 实现方式 | 工具建议 |
|---|
| 热门内容分析 | 统计高频关键词、标签 | Pandas + TF-IDF |
| 用户行为预测 | 基于互动数据建模型 | Scikit-learn |
| 竞品监测 | 定期抓取竞品笔记声量 | 定时任务 + MongoDB |
| A/B 测试 | 对比不同封面/标题效果 | Excel 双轴折线图 |
五、关键注意事项
| 风险点 | 应对措施 |
|---|
| 频率限制 | 官方 API 每分钟 ≤100 次;采集方案建议 1-3 秒/次 |
| 429 限流 | 实现指数退避重试机制 |
| 数据合规 | 遵守《个人信息保护法》,不存储手机号/地址,敏感数据脱敏 |
| Cookie 过期 | xhs 方案需定期更新 Cookie,推荐二维码登录 |
| 接口变更 | 小红书 API 更新频繁,建议关注开放平台公告 |
总结建议
- 有企业资质 → 走官方 API,稳定合规,适合长期业务
- 个人/快速验证 → 用 xhs 项目,5 分钟上手,适合数据分析和竞品调研
- 不确定方向 → 先用官方创作者中心 + 第三方工具(新红/千瓜)手动验证需求,再决定是否投入开发