欢迎光临
我们一直在努力

影刀RPA实操指南_小红书笔记批量采集完整流程

影刀RPA实操指南:小红书笔记批量采集——从搜索到翻页到存表格的完整流程

小红书是内容电商的核心阵地,商品种草、用户评价、竞品分析都绕不开它。

但小红书的采集有一个特点:笔记流是滚动加载的,不是传统分页。而且单页卡片多,XPath结构有嵌套。

这篇给一个从零到落地的完整流程,拿来改一改关键词就能直接用。

在这里插入图片描述


一、开始前需要准备的

  • 影刀客户端登录状态:确保影刀内置浏览器已经登录了小红书网页版
  • Python图标:左下角确认已点亮(流程里会用到一小段Python做数据清洗)
  • 目标搜索词:定好搜什么,比如"防晒霜推荐"

  • 二、完整流程拆解

    在这里插入图片描述

    整个流程分成5步:

  • 打开小红书搜索页 → 输入关键词 → 搜索
  • 滚动加载笔记流(滚动加载法翻页)
  • 获取相似元素列表 → 遍历提取每条笔记的标题、作者、点赞、链接
  • Pandas清洗数据(去重、格式化)
  • 拼多多店群自动化报活动上架!

  • 导出Excel + 可选飞书通知

  • 在这里插入图片描述

    三、代码实现

    # ===== 步骤1:打开页面 + 搜索 =====

    打开网页("https://www.xiaohongshu.com/explore")
    等待元素出现("首页标识", 5)

    # 点击搜索框
    点击元素("搜索输入框")
    输入文本("搜索输入框", "防晒霜推荐")
    点击元素("搜索按钮")

    等待元素出现("搜索结果列表", 5)

    # ===== 步骤2:滚动加载笔记流 =====

    新建Excel > 笔记数据表
    写入行数据(笔记数据表, ["序号", "笔记标题", "作者", "点赞数", "笔记链接"])

    滚动次数 = 30
    序号 = 0

    固定次数循环(滚动次数, 当前滚动):
    # 每次滚动前记录已有数量
    获取相似元素列表("笔记卡片列表") > 旧列表
    旧数量 = 列表长度(旧列表)

    # 滚动到底部
    页面滚动到底部()
    等待元素出现("新笔记加载中的标识", 2)
    固定等待(2)

    # 检查是否有新内容
    获取相似元素列表("笔记卡片列表") > 新列表
    新数量 = 列表长度(新列表)

    如果 新数量 == 旧数量:
    输出日志("无新内容,停止滚动在第" + str(当前滚动) + "次")
    跳出循环

    # ===== 步骤3:遍历采集所有笔记 =====

    获取相似元素列表("全部笔记卡片列表") > 全部卡片

    遍历列表(全部卡片, 当前卡片):
    序号 = 序号 + 1

    # 笔记标题 — 用相对XPath从卡片容器里取
    # 捕获元素:当前卡片内 //div[@class='title']
    获取元素文本(当前卡片, ".//div[contains(@class,'title')]") > 笔记标题

    # 作者名 — 用参照物定位(通过作者头像后面的span)
    # 捕获元素:当前卡片内 //a[@class='author-wrapper']//span
    获取元素文本(当前卡片, ".//a[contains(@class,'author')]//span[contains(@class,'name')]") > 作者名

    # 点赞数 — 如果有具体数值span
    # 捕获元素:当前卡片内 //span[contains(@class,'like-count')]
    获取元素文本(当前卡片, ".//span[contains(@class,'like') or contains(@class,'count')]") > 点赞数

    # 笔记链接 — 从卡片内的a标签取href属性
    获取元素属性(当前卡片, ".//a[@class='cover']", "href") > 笔记链接

    # 写入表格
    写入行数据(笔记数据表, [序号, 笔记标题, 作者名, 点赞数, 笔记链接])

    # ===== 步骤4:Python清洗(可选) =====
    # 如果你不需要Pandas清洗,跳过这一步直接导出

    导出表格(笔记数据表, "D:\\小红书_防晒霜_原始.xlsx")


    四、滚动加载的终止条件怎么设

    有两个方案:

    在这里插入图片描述

    方案A:固定滚动N次(简单可靠)

    设一个足够大的值(比如30次),配合"无新内容就跳出"的逻辑,不会真的滚30次。

    滚动次数 = 30 # 最大值
    固定次数循环(滚动次数, 当前滚动):
    记录滚动前数量
    滚动到底部
    等待(2)
    如果 当前数量 == 旧数量:
    跳出循环

    方案B:滚动到页面底部的"已无更多内容"提示

    条件循环(True):
    滚动到底部
    等待(2)

    判断元素是否存在("已无更多内容提示")
    ![在这里插入图片描述](https://iblog.csdnimg.cn/direct/a3ac4709759443bca85ff2e941da2dcc.png#pic_center)

    如果 结果为真:
    跳出循环

    问题:有些小版本更新后这个提示的class可能会变。方案A更稳。


    五、小红书特有坑

    坑1:登录态

    小红书网页版对未登录用户的限制比较严。搜索几次后就会弹登录弹窗。

    解决:先在影刀内置浏览器里手动登录一次小红书,勾选"记住我"。

    在这里插入图片描述

    坑2:笔记卡片class不稳定

    小红书的CSS类名有时是哈希值,比如 class="fe3d2a",每次改版都可能变。

    解决:避免依赖完整class名,用部分匹配。

    TEMU店群矩阵自动化运营核价报活动

    # ❌ 完整的哈希class
    //div[@class='fe3d2a b8c91e']

    # ✅ 用contains部分匹配更稳定的特征
    ![在这里插入图片描述](https://iblog.csdnimg.cn/direct/18b22c41abd14869a12fd1a2980620ab.png#pic_center)

    //div[contains(@class,'note-item')]
    //section[@datavxxx] # data属性更稳

    坑3:图片懒加载导致元素位置偏移

    滚动加载过程中,图片从上到下逐步渲染,dom树会不断重排。如果采集速度太快,可能取到错位的元素。

    解决:每次滚动后多等1~2秒。


    六、最终导出后的数据长什么样

    序号笔记标题作者点赞数笔记链接
    1 今年防晒霜测评,这几款真的好用 美妆达人小A 2.3万 https://www.xiaohongshu.com/…
    在这里插入图片描述

    | 2 | 学生党防晒霜推荐50元以下 | 学生党看过来 | 1.5万 | https://www.xiaohongshu.com/… |


    七、扩展:采集某个博主的所有笔记

    上面的流程是搜索采集。如果你需要采集某个博主的全部笔记:

    # 思路:进入博主主页→滚动加载→采集

    打开网页("https://www.xiaohongshu.com/user/profile/用户ID")
    等待元素出现("笔记列表容器", 5)

    # 后面的滚动加载和采集逻辑同上

    进入博主主页的方法:在小红书网页版搜博主名字→点进主页→地址栏复制URL里的用户ID。

    在这里插入图片描述


    作者:林焱

    在这里插入图片描述

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

    赞(0)
    未经允许不得转载:171主机测评 » 影刀RPA实操指南_小红书笔记批量采集完整流程
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址