小红书笔记提取操作指南

1513 words
8 minutes
小红书笔记提取操作指南

小红书笔记提取操作指南#

从小红书链接到结构化文档的完整工作流


概述#

从一个小红书(sharing)笔记链接开始,经过 链接解析 → 笔记数据获取 → 图片下载 → OCR 文字识别 → 清洗整理,最终得到可编辑、格式清晰的 Markdown 文档。

适用场景:图文笔记(carousel)、普通文字笔记、含多张图片的长文笔记。


流程图解#

小红书短链接 (xhslink.com)
浏览器/API 解析为完整URL
获取笔记元数据(标题、标签、图片列表、描述)
├──纯文字笔记 → 直接提取文字
└──图文/图片笔记
下载全部图片(19张以内)
OCR 识别(中文简体)
清洗整理 → 保存 Markdown

前置条件#

Alpine 环境中需要安装的工具:

方式 A:xhs CLI(推荐,适合快速读取)#

Terminal window
uv tool install xiaohongshu-cli

配置文件路径:~/.xiaohongshu-cli/cookies.json

需要三个 cookies:a1webIdweb_session。其中 web_session 通过调用 login_activate() API 自动获取(HttpOnly cookie,无法手动提取)。

# 获取 web_session 的示例
from xhs_cli.client import XhsClient
client = XhsClient(cookies)
client.login_activate() # 自动获取并保存 web_session

常用命令:

Terminal window
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 创建。

Terminal window
# 启动API服务
cd /workspace/xhs-downloader
python 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#

Terminal window
apk add tesseract-ocr tesseract-ocr-data-chi_sim

验证安装:

Terminal window
tesseract --list-langs
# 输出应包含:chi_sim

标准操作流程#

Step 1:获取完整笔记 URL#

小红书分享链接是 xhslink.com 短链,需要先解析。

方式一:用浏览器 navigate 解析

# 通过 browser_use 工具的 navigate action
browser_use(action="navigate", url="http://xhslink.com/o/xxxxxx")
# 结果中 currentUrl 即为完整的笔记 URL

方式二:用 xhs CLI 直接读取

Terminal window
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_share

Step 2:获取笔记数据#

使用 xhs CLI 读取完整笔记数据:

Terminal window
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:

Terminal window
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 缺失。

解决:

  1. 先用浏览器 navigate 短链接,获取重定向后的完整 URL
  2. 用完整 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_preurl_default 中的其他域名

完整执行示例#

以下是从链接到文档的完整终端命令序列:

Terminal window
# 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/笔记名称_img
for f in page_*.webp; do
tesseract "$f" stdout -l chi_sim >> /tmp/ocr_output.txt
done
# 4. 清洗整理为Markdown
python3 << '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!

小红书笔记提取操作指南
https://estars-blog.pages.dev/posts/航海图-操作指南-小红书笔记提取操作指南/
Author
Estars
Published at
2026-06-11
License
CC BY-NC-SA 4.0
Profile Image of the Author
Estars
这条路要走完,才能看到世界的终点,是海纳百川,还是星火燎原。
公告
欢迎来到我的博客!这是一则示例公告。
Music
Cover

Music

No playing

0:00 0:00
No lyrics available
Categories
Tags
Site Statistics
Posts
91
Categories
5
Tags
44
Total Words
374,063
Running Days
0 days
Last Activity
0 days ago

Table of Contents