小红书笔记提取操作指南
小红书笔记提取操作指南
从小红书链接到结构化文档的完整工作流
概述
从一个小红书(sharing)笔记链接开始,经过 链接解析 → 笔记数据获取 → 图片下载 → OCR 文字识别 → 清洗整理,最终得到可编辑、格式清晰的 Markdown 文档。
适用场景:图文笔记(carousel)、普通文字笔记、含多张图片的长文笔记。
流程图解
小红书短链接 (xhslink.com) │ ▼ 浏览器/API 解析为完整URL │ ▼ 获取笔记元数据(标题、标签、图片列表、描述) │ ├──纯文字笔记 → 直接提取文字 │ └──图文/图片笔记 │ ▼ 下载全部图片(19张以内) │ ▼ OCR 识别(中文简体) │ ▼ 清洗整理 → 保存 Markdown前置条件
Alpine 环境中需要安装的工具:
方式 A:xhs CLI(推荐,适合快速读取)
uv tool install xiaohongshu-cli配置文件路径:~/.xiaohongshu-cli/cookies.json
需要三个 cookies:a1、webId、web_session。其中 web_session 通过调用 login_activate() API 自动获取(HttpOnly cookie,无法手动提取)。
# 获取 web_session 的示例from xhs_cli.client import XhsClientclient = XhsClient(cookies)client.login_activate() # 自动获取并保存 web_session常用命令:
xhs read <笔记URL> # 读取笔记(支持完整URL)xhs search <关键词> # 按关键词搜索xhs hot # 热门笔记xhs feed # 推荐流方式 B:XHS-Downloader(适合下载图片和批量操作)
GitHub:JoeanAmier/XHS-Downloader v2.8
已安装在 /workspace/xhs-downloader,venv 使用 uv sync 创建。
# 启动API服务cd /workspace/xhs-downloaderpython main.py api --port 5556
# 调用API获取笔记详情curl -X POST http://localhost:5556/xhs/detail \ -H "Content-Type: application/json" \ -d '{"url":"<完整URL>","download":false}'
# 返回数据包含 title、desc、image_list(含所有图片URL)⚠️ 注意:不要用
uv run(会重编 nuitka,极慢),直接用 venv Python 路径。 venv Python 路径示例:/root/.cache/omnibot/uv-project-envs/.../bin/python
OCR 工具:Tesseract
apk add tesseract-ocr tesseract-ocr-data-chi_sim验证安装:
tesseract --list-langs# 输出应包含:chi_sim标准操作流程
Step 1:获取完整笔记 URL
小红书分享链接是 xhslink.com 短链,需要先解析。
方式一:用浏览器 navigate 解析
# 通过 browser_use 工具的 navigate actionbrowser_use(action="navigate", url="http://xhslink.com/o/xxxxxx")# 结果中 currentUrl 即为完整的笔记 URL方式二:用 xhs CLI 直接读取
xhs read "http://xhslink.com/o/xxxxxx"# 如果提示 "No xsec_token — using HTML fallback"# 需要先解析出完整URL再重试完整 URL 格式示例:
https://www.xiaohongshu.com/discovery/item/{note_id}?xsec_token={token}&source=app_shareStep 2:获取笔记数据
使用 xhs CLI 读取完整笔记数据:
xhs read "https://www.xiaohongshu.com/discovery/item/xxx?..."返回的 YAML 格式数据包含:
| 字段 | 说明 |
|---|---|
data.items[].note_card.title | 笔记标题 |
data.items[].note_card.desc | 描述文本(含标签) |
data.items[].note_card.type | 笔记类型(normal=图文,video=视频) |
data.items[].note_card.image_list | 图片列表(含 url_default、width、height) |
关键操作:从 image_list 中提取所有 url_default 字段,得到图片下载链接。
Step 3:下载所有图片
编写 Python 脚本下载图片:
import urllib.request, os
urls = [...] # 从 Step 2 提取的图片URL列表img_dir = "/workspace/笔记名称_图片目录"os.makedirs(img_dir, exist_ok=True)
for i, url in enumerate(urls): fname = f"{img_dir}/page_{i+1:02d}.webp" urllib.request.urlretrieve(url, fname)注意事项:
- 图片格式为
.webp,可直接用于 OCR - 图片数量通常 1-19 张
- 注意请求频率,可加
time.sleep(0.5)避免被限
Step 4:OCR 识别
对所有图片执行 Tesseract OCR:
cd /workspace/笔记目录for f in page_*.webp; do echo "===== $f =====" tesseract "$f" stdout -l chi_sim 2>/dev/null echo ""done输出会按图片顺序展示识别文字。
Step 5:文字清洗与整理
OCR 输出存在常见问题需要清洗:
常见OCR噪声
| 噪声类型 | 示例 | 修正方法 |
|---|---|---|
| 中文间多余空格 | ”尝 试 用” | 正则去除汉字间空格 |
| 符号混淆 | ”一” 误为 ”-“ | 替换为正确符号 |
| 英文拼写错误 | ”LLMI” → “LLM” | 上下文精确替换 |
| 标点符号错乱 | ”`”、”·“ | 替换为标准标点 |
| 换行位置错误 | 行末多余换行 | 按语义合并段落 |
清洗 Python 示例
import re
def clean_ocr_text(text): # 去除中文之间的空格 text = re.sub(r'([\u4e00-\u9fff])\s+([\u4e00-\u9fff])', r'\1\2', text) # 修正中文标点前的空格 text = re.sub(r'([\u4e00-\u9fff])\s+([,。;:?、!\)\])])', r'\1\2', text) # 特定错误修正 text = text.replace("LLMI", "LLM").replace("—", "—") return text.strip()Step 6:组织为结构化文档
按照原文的段落层次组织:
# 笔记标题> 来源:小红书笔记 | OCR提取于 YYYY-MM-DD
---
## 一级标题
正文内容...
### 二级标题
列表、表格、代码块...文档结构建议:
- 保留原文的信息层级
- 使用 Markdown 表格替代原文中的对比/分类内容
- 代码目录结构用树形文本
- 重要结论或原则用引用或加粗突出
常见问题与处理
1. xhs CLI 报 “Could not parse INITIAL_STATE from HTML”
原因: 短链接(xhslink.com)未解析,或 xsec_token 缺失。
解决:
- 先用浏览器 navigate 短链接,获取重定向后的完整 URL
- 用完整 URL 重新执行
xhs read
2. xhs CLI 提示 “No xsec_token”
原因: 缺少必要的安全参数。
解决: 需要完整 URL(含 xsec_token),而不是短链接。
3. Tesseract OCR 识别质量差
原因及对策:
- 图片分辨率太低 → 使用原图 URL(非缩略图)
- 中文识别率低 → 确保
-l chi_sim参数正确 - 背景复杂干扰 → 避免保存干扰较大的缩略图版本
4. 图片下载失败
原因: 网络问题或 CDN 限流。
解决:
- 加
time.sleep(1)降低请求频率 - 尝试切换为
url_pre或url_default中的其他域名
完整执行示例
以下是从链接到文档的完整终端命令序列:
# 1. 解析URL并获取笔记数据xhs read "https://www.xiaohongshu.com/..." > /tmp/note_data.yaml
# 2. 提取图片URL并下载python3 << 'EOF'# 从YAML输出中提取 url_default 字段# 下载到 /workspace/笔记名称_img/EOF
# 3. OCR识别cd /workspace/笔记名称_imgfor f in page_*.webp; do tesseract "$f" stdout -l chi_sim >> /tmp/ocr_output.txtdone
# 4. 清洗整理为Markdownpython3 << 'EOF'# 读取OCR输出,清洗,组织为结构化文档EOF目录规范
- 笔记最终文档:
/workspace/小万工作间/笔记标题_全文.md - 图片临时缓存:可放在
/workspace/笔记简称/,完成清理后可删除 - OCR 原始输出:不需要保留,只保留清洗后的版本
参考资料
- 已安装 xhs CLI(
uv tool install xiaohongshu-cli) - XHS-Downloader:
/workspace/xhs-downloader(GitHub: JoeanAmier/XHS-Downloader v2.8) - Tesseract 文档:
https://github.com/tesseract-ocr/tesseract - 本指南关联 Skill:
rednote-skill
Share Article
If this article helped you, please share it with others!