# 影刀RPA新手教程:小红书笔记批量采

影刀RPA新手教程:小红书笔记批量采集流程——从搜索到翻页到存表格

做小红书运营,每天要手动搜关键词、复制笔记标题和链接、统计点赞数。
解决方法:用影刀自动搜索关键词→采集笔记列表→翻页→写入Excel。

本文给出完整的采集流程,适配小红书网页版(www.xiaohongshu.com)。


一、小红书采集的难点与解决方案

picture.image

难点原因解决方案
页面滚动加载瀑布流,没有传统分页滚动到底部触发加载
元素class动态class名带随机字符串用contains模糊匹配

picture.image | 登录态要求 | 不登录只能看少量笔记 | 流程开始时登录 | | 反爬限制 | 频繁访问会弹验证码 | 加随机等待、限制采集条数 |

前置准备

  • 注册小红书账号并登录(建议在浏览器中保持登录态)

picture.image

  • 准备搜索关键词列表(Excel或直接在流程中定义)

二、捕获小红书搜索页的关键元素

picture.image

打开小红书网页版(https://www.xiaohongshu.com),搜索任意词(如“护肤”),按F12。

需要捕获的元素清单

picture.image

元素名用途XPath参考(需手动校验)
input_search搜索输入框//input[@placeholder='搜索']//input[@class='search-input']
btn_search搜索按钮//div[@class='search-icon']
div_note_card笔记卡片容器//div[contains(@class,'note-item')]//section[contains(@class,'note')]

picture.image | txt_title | 笔记标题 | {当前卡片}//a[contains(@class,'title')] | | txt_author | 作者名 | {当前卡片}//span[contains(@class,'author')] | | txt_likes | 点赞数 | {当前卡片}//span[contains(@class,'like')]//span[@class='count'] | | link_detail | 笔记链接 | {当前卡片}//a[contains(@class,'cover')]/@href |

💡 小红书class经常变化,建议用XPath Helper实时校验。
推荐使用相对稳定的属性如 data-testid(如果存在)。

捕获技巧

  • 先捕获一个笔记卡片父容器 div_note_card
  • 子元素(标题、作者等)用右键父元素 → “捕获子元素”生成相对路径。

三、完整流程设计

A_Main(主流程)
  ├─ 1. 打开Excel(准备输出文件)
  ├─ 2. 打开小红书首页并登录(若未登录)
  ├─ 3. 输入关键词并搜索
  ├─ 4. 等待笔记列表出现
  ├─ 5. 调用子流程 C_01_CollectNotes(采集当前已加载的笔记)
  ├─ 6. 滚动加载更多(条件循环,直到没有新笔记)
  │      ├─ 滚动页面到底部
  
![picture.image](https://p3-volc-community-sign.byteimg.com/tos-cn-i-tlddhu82om/9846cb3566d3429895c6fe1f45dfb6b9~tplv-tlddhu82om-image.image?=&rk3s=8031ce6d&x-expires=1781225922&x-signature=OVY1SDz2tZKKAg1ym39erHTxgUA%3D)
  │      ├─ 等待新笔记出现
  │      ├─ 调用 C_01_CollectNotes(采集新笔记,需去重)
  │      └─ 判断是否还有“加载更多”或达到上限
  └─ 7. 关闭Excel

![picture.image](https://p3-volc-community-sign.byteimg.com/tos-cn-i-tlddhu82om/1e7be05b7737499c9a35ce6ada07b844~tplv-tlddhu82om-image.image?=&rk3s=8031ce6d&x-expires=1781225922&x-signature=y8PTEaFMI0aGmF3Jaj7%2FLQ%2BgFsk%3D)

C_01_CollectNotes(采集当前页面所有笔记)
  ├─ 1. 获取相似元素列表 div_note_card → list_notes
  ├─ 2. 循环相似元素列表(当前卡片变量 card)
  │      ├─ 提取标题、作者、点赞数、链接
  │      ├─ 检查是否已采集过(对比链接)
  │      ├─ 若未采集,组装行数据,追加到Excel
  │      └─ 记录已采集的链接(存入全局列表)
  └─ 3. 返回新采集的数量

四、分步指令详解

步骤1:打开小红书并登录

# 1. 打开小红书网页版
#    打开网页:https://www.xiaohongshu.com
#    等待元素出现:搜索输入框(超时5秒)

# 2. 判断是否需要登录(查找“登录”按钮)
#    判断元素是否存在://div[contains(text(),'登录')] 或 //button[contains(text(),'登录')]
#    如果存在,执行登录子流程(手动扫码或账号密码)

登录处理建议
首次运行时手动登录一次,后续利用浏览器的Cookie持久化。
在“打开网页”指令的高级设置中,指定固定的用户数据目录。

picture.image

picture.image

步骤2:输入关键词并搜索

# 输入文本
#    目标元素:input_search
#    文本内容:{keyword}(如“护肤”)
#    清空原有内容:是

# 点击搜索
#    鼠标点击:btn_search

# 等待笔记卡片出现
#    等待元素出现:div_note_card(超时10秒)

步骤3:采集当前页面笔记(去重)

# 获取相似元素列表
#    目标元素:div_note_card
#    输出列表:note_cards

# 设置局部变量 new_count = 0

# 循环相似元素列表
#    列表:note_cards
#    当前元素变量:card

#    循环体内:
#       1. 获取元素文本(标题)
#          元素路径:{card}//a[contains(@class,'title')] → 输出 title
#       2. 获取元素文本(作者)
#          元素路径:{card}//span[contains(@class,'author')] → 输出 author
#       3. 获取元素文本(点赞数)
#          元素路径:{card}//span[contains(@class,'like')]//span[contains(@class,'count')] → 输出 likes_raw
#          清洗:提取数字("1.2万" → 12000)
#       4. 获取元素属性(链接)
#          元素:{card}//a[contains(@class,'cover')] 或 //a[@href]
#          属性名:href → 输出 link
#          补全:如果链接以 / 开头,前面加 https://www.xiaohongshu.com

#       5. 检查是否已采集(全局变量 g_collected_links 列表)
#          如果 {link} 不在 {g_collected_links} 中:
#             - 追加到 g_collected_links
#             - 组装行数据:[title, author, likes_num, link]
#             - 追加行到Excel
#             - new_count = new_count + 1

# 循环结束,输出日志:“本次新采集 {new_count} 条”

步骤4:滚动加载更多

小红书是瀑布流,滚动到底部自动加载新笔记。

# 设置变量 {no_new_count} = 0(连续无新笔记次数)
# 设置变量 {max_scroll} = 20(最大滚动次数,防止无限)

# 条件循环:{no_new_count} < 3 and {scroll_count} < {max_scroll}
#    1. 滚动页面到底部
#       指令:滚动窗口 → 方向“到底部”
#    2. 固定等待 2 秒(等待加载)
#    3. 调用子流程 C_01_CollectNotes,输出 {new_count}
#    4. 如果 {new_count} == 0
#          {no_new_count} = {no_new_count} + 1
#      否则
#          {no_new_count} = 0
#    5. {scroll_count} = {scroll_count} + 1
# 循环结束

滚动指令位置:指令面板搜索“滚动窗口”或“滚动到元素”。
如果没有滚动窗口指令,可以用“执行JavaScript”:window.scrollTo(0, document.body.scrollHeight)


五、数据清洗(点赞数转数字)

小红书点赞数格式:“1.2万”、“3456”、“10w”。
用Python正则统一转成整数。

import re

likes_raw = get_var("likes_raw")  # 如 "1.2万" 或 "3456" 或 "10w"

match = re.search(r'([\d\.]+)([万w]?)', likes_raw)
if match:
    num = float(match.group(1))
    unit = match.group(2).lower()
    if unit in ['万', 'w']:
        likes_num = int(num * 10000)
    else:
        likes_num = int(num)
else:
    likes_num = 0

set_var("likes_num", likes_num)

六、小红书专属避坑指南

坑1:不登录只能看少量笔记

未登录状态下,滚动几次后就不会再加载新内容。
解决:流程开始时先登录,用固定浏览器用户数据目录保持登录态。

坑2:笔记卡片结构不一致

搜索结果页和发现页的卡片结构可能不同。
解决:以搜索结果页为准捕获元素,用contains模糊匹配。

坑3:点赞数位置可能缺失

有些笔记没有显示点赞数(刚发布)。
解决:用“判断元素是否存在”避免报错,缺失则填0。

坑4:滚动太快触发反爬

连续快速滚动会被限制。
解决:每次滚动后固定等待2~3秒,随机浮动。

坑5:链接是相对路径

捕获到的 href 可能是 /discovery/item/xxxx
解决:用“字符串拼接”加上前缀 https://www.xiaohongshu.com


七、Excel输出示例

标题作者点赞数链接
干皮亲妈面霜测评护肤小达人12000https://www.xiaohongshu.com/...
早C晚A新手教程成分党Lisa3500https://www.xiaohongshu.com/...

表头建议
手动创建Excel,第一行写入:标题、作者、点赞数、链接。


八、完整流程优化建议

优化点方法
多关键词采集外层套“列表循环”,读取Excel中的关键词列表
限制采集总数全局变量 g_target_count,达到后跳出滚动循环
断点续采将已采集链接保存到本地文件,下次运行时加载
随机等待用“随机数”指令生成1~3秒等待,模拟人工
异常恢复Try-Catch包裹滚动和采集,出错后截图并继续

影刀专属操作清单

操作精确指令说明
打开小红书打开网页URL: https://www.xiaohongshu.com
输入搜索词输入文本用模拟输入
等待卡片等待元素出现超时10秒
获取卡片列表获取相似元素列表目标元素为笔记卡片
滚动到底部滚动窗口执行JavaScript触发加载
追加行追加行写入Excel
去重判断获取列表指定位置的元素 + 如果检查链接是否在全局列表中
数据清洗Python代码处理点赞数格式

版本差异:社区版小红书采集建议单次不超过50条,避免触发风控。
创业版可搭配代理IP轮换。


常见问题速查

问题原因解决方法
搜索后无笔记页面加载慢或关键词无结果增加等待时间,检查元素路径
滚动后不加载新内容未登录或触发风控登录后重试,降低滚动频率
点赞数提取为0格式不匹配(如“10w”中的w小写)正则加上 [Ww]
重复采集同一条笔记没有去重逻辑用全局列表记录已采链接
捕获的元素运行时失效class变化用contains模糊匹配
采集条数比实际少卡片未完全加载滚动后多等几秒再获取列表

推荐资源

  • 小红书网页版:https://www.xiaohongshu.com
  • 影刀模板市场:搜索“小红书笔记采集”
  • XPath Helper:校验元素定位

最后一句:小红书采集的关键是“慢”——滚动慢、等待久、加随机延迟。
调通后,每天竞品监控、热点追踪的效率提升10倍。记得遵守平台规则,合理使用。


作者:林焱

本文为《影刀RPA学习手册》系列文章之一,内容源于实操经验的整理与分享。

0
0
0
0
评论
未登录
暂无评论