文档备案控制台
免费开始使用

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

小红书做种草、竞品分析、达人投放,都需要批量采集笔记数据。
手动复制粘贴太慢,用影刀RPA可以自动搜索关键词、翻页、采集标题/作者/点赞数,最后存到Excel。

我把整个流程拆成5个核心步骤,从打开小红书到翻页采集,每步都有稳定处理浮层和滚动加载的技巧。


一、整体流程设计

picture.image

步骤子流程核心指令
1A01_打开小红书并登录打开网页、等待元素出现、输入账号密码
2B01_搜索关键词输入文本、点击搜索

| 3 | B02_滚动加载笔记列表 | 滚动页面、等待新内容、判断是否到底 | | 4 | B03_批量采集笔记数据 | 获取相似元素列表、提取标题/作者/点赞数 | | 5 | C01_写入Excel | 创建文件、追加行、保存 |

picture.image 注意: 小红书是滚动加载(无限滚动),没有“下一页”按钮,需要用滚动触底的方式。

picture.image


二、第一步:打开小红书并登录(可选)

picture.image 小红书可以不登录浏览,但登录后能采集更多数据(如收藏、关注等)。

操作步骤

  1. 打开网页

picture.image 指令:打开网页,URL填 https://www.xiaohongshu.com

  1. 等待首页加载完成
    等待元素出现:小红书Logo或搜索框

picture.image

# 等待搜索框出现
//input[@placeholder='搜索']

picture.image 3. 点击登录按钮(如果需要)
捕获登录按钮(右上角)

//div[contains(@class,'login-btn')]
  1. 扫码或账号登录
    建议用“半自动”方式:流程暂停,手动扫码登录后再继续。
    等待元素出现(已登录头像, 60秒),超时则报错。

版本差异: 社区版30分钟时长,登录过程也计时,建议提前手动登录好,流程里跳过登录步骤。


三、第二步:搜索关键词

操作

  1. 在搜索框输入关键词
    捕获搜索框元素,用输入文本指令
# 小红书搜索框
//input[@placeholder='搜索']

picture.image 2. 点击搜索按钮
捕获搜索按钮(放大镜图标)

//div[@class='search-icon']
  1. 等待搜索结果页加载
    等待笔记卡片出现
//section[contains(@class,'note-item')]

处理搜索联想词

如果输入后出现下拉联想词,可以:

  • 直接按回车键(用模拟按键(enter)
  • 或者等待0.5秒后点击第一个联想词

四、第三步:滚动加载笔记列表(核心难点)

小红书是无限滚动,滚动到底部自动加载下一批笔记,没有“下一页”按钮。

滚动采集逻辑


![picture.image](https://p3-volc-community-sign.byteimg.com/tos-cn-i-tlddhu82om/0953cc5fd4ca4cd59ded164db10dcabc~tplv-tlddhu82om-image.image?=&rk3s=8031ce6d&x-expires=1782090761&x-signature=nm7fkPfmrot00M2hhkRy8yRTGp8%3D)
上次笔记数量 = 0
无新内容计数 = 0

![picture.image](https://p3-volc-community-sign.byteimg.com/tos-cn-i-tlddhu82om/7c5a6d415a9d418abc35c1e9adb3846b~tplv-tlddhu82om-image.image?=&rk3s=8031ce6d&x-expires=1782090761&x-signature=ypuI7ELwFRquvv0Nv6pv7D%2BEtus%3D)
循环 当 无新内容计数 < 3
    # 滚动到底部
    滚动页面(到底部)
    # 等待新内容加载
    等待(2000)
    
    # 获取当前笔记卡片列表
    当前笔记列表 = 获取相似元素列表(笔记卡片)
    当前数量 = 长度(当前笔记列表)
    
    如果 当前数量 == 上次笔记数量
        无新内容计数 = 无新内容计数 + 1
    否则
        无新内容计数 = 0
        上次笔记数量 = 当前数量
        # 可选:采集当前所有新出现的笔记(增量)

关键元素捕获

# 捕获:单个笔记卡片(父容器)
//section[contains(@class,'note-item')]

# 捕获:笔记标题(在卡片内部,用相对路径)
.//a[contains(@class,'title')]

# 捕获:作者昵称
.//span[contains(@class,'author')]

# 捕获:点赞数
.//span[contains(@class,'like-count')]

注意: 点赞数可能显示为“1.2万”,需要后期用Python清洗。

稳定滚动技巧

  • 每次滚动后固定等待1-2秒(小红书加载慢时可能需要3秒)
  • 连续3次滚动后数量不变,认为已到底部
  • 可以设置最大滚动次数(比如30次),防止死循环

五、第四步:批量采集笔记数据

有两种采集方式:

方式1:滚动同时增量采集(推荐)

每次滚动后,只采集新出现的笔记,避免重复。

实现方法:
记录上一次采集到的笔记数量,只从上次数量+1开始取。

方式2:滚动结束后一次性采集

滚动到底部后,所有笔记都已加载,再用“获取相似元素列表”一次性采集全部。

优点: 代码简单
缺点: 滚动过程中如果页面刷新,可能丢失数据

提取每条笔记的数据(子流程)

输入参数:当前笔记卡片(元素对象)
输出参数:标题、作者、点赞数

# 基于卡片相对定位
标题 = 获取元素文本(当前卡片, ".//a[contains(@class,'title')]")
作者 = 获取元素文本(当前卡片, ".//span[contains(@class,'author')]")
点赞数原始 = 获取元素文本(当前卡片, ".//span[contains(@class,'like-count')]")

# 清洗点赞数(将“1.2万”转为12000)
如果 contains(点赞数原始, "万")
    点赞数 = 转换为数字(替换(点赞数原始, "万", "")) * 10000
否则
    点赞数 = 转换为数字(点赞数原始)

设置输出参数(标题, 标题)
设置输出参数(作者, 作者)
设置输出参数(点赞数, 点赞数)

采集时的反爬注意事项

  • 小红书有反爬机制,不要滚动太快。每次滚动间隔至少2秒
  • 建议每次采集不超过200条笔记,分时段运行
  • 如果出现验证码,流程暂停并发送通知(可以用飞书消息)

六、第五步:写入Excel

创建Excel并写入表头

打开Excel("C:\小红书采集结果.xlsx", Excel对象)
写入行数据到表格(Excel对象, "A1", ["标题", "作者", "点赞数"])

循环写入数据

循环遍历列表(采集结果列表, 单条数据)
    追加行到表格(Excel对象, [单条数据.标题, 单条数据.作者, 单条数据.点赞数])

保存关闭

保存Excel(Excel对象)
关闭Excel(Excel对象)

七、完整流程代码(逻辑结构)

主流程:
    调用子流程(A01_打开小红书并登录)
    调用子流程(B01_搜索关键词, 输入={关键词: "RPA教程"})
    
    全部采集数据 = []   # 存储所有笔记
    
    # 滚动采集
    上次数量 = 0
    无新次数 = 0
    
    循环 当 无新次数 < 3
        滚动页面(到底部)
        等待(2000)
        
        当前卡片列表 = 获取相似元素列表(笔记卡片)
        当前数量 = 长度(当前卡片列表)
        
        如果 当前数量 == 上次数量
            无新次数 = 无新次数 + 1
        否则
            # 增量采集新出现的笔记
            For i = 上次数量 To 当前数量 - 1
                当前卡片 = 当前卡片列表[i]
                调用子流程(B03_采集单条笔记, 
                    输入={当前卡片: 当前卡片},
                    输出={标题: t, 作者: a, 点赞数: l})
                追加到列表(全部采集数据, [t, a, l])
            
            上次数量 = 当前数量
            无新次数 = 0
        
        # 防止无限滚动,最多30次
        如果 滚动次数 >= 30
            跳出循环
    
    调用子流程(C01_写入Excel, 输入={数据列表: 全部采集数据})

八、常见问题速查

问题原因解决方法
滚动后不加载新笔记滚动速度太快,小红书判定为机器每次滚动后固定等待2-3秒
捕获不到笔记标题标题在<a>标签里但class动态//a[contains(@href,'/explore/')]定位
点赞数带“万”转换错误正则提取数字失败用Python代码处理:re.sub(r'[^0-9.]','', '1.2万') 再乘10000
登录滑块验证码小红书风控换用扫码登录,或用半自动方式手动过验证
采集到一半弹出验证码采集频率过高降低滚动速度,增加随机等待(2-4秒)
社区版30分钟不够用滚动+等待耗时减少采集条数(比如只采50条),或升级创业版

九、扩展:采集笔记详情页

如果还需要采集笔记的正文、发布时间、评论数,需要点进详情页。

操作

在滚动采集时,获取笔记链接,再逐个打开详情页采集。

# 捕获笔记详情页链接
.//a[contains(@href,'/explore/')]/@href

然后循环打开链接,采集详情页数据(参考子流程拆分原则)。

注意: 点进详情页会消耗更多时间,社区版30分钟可能不够。建议先采集列表数据,再单独跑一个流程采详情。


推荐资源

  • 影刀官方学院: “实战案例——小红书笔记采集”(有完整视频)
  • 我的文章联动:
    • 滚动加载详细方案:[翻页逻辑的3种实现方式(选题池16号)]
    • XPath定位技巧:[父子元素定位与相似元素列表(选题池3号)]
    • 数据清洗:[Python代码指令做数据清洗(选题池18号)]
  • 工具推荐: 小红书网页版用Chrome无痕模式可以减少风控

作者:林焱

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

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