影刀RPA新手教程:自媒体博主工具箱完全指南——选题采集、数据分析与多平台发布自动化
我做自媒体第三个月,每天花在找选题上的时间比写文章还长。
刷小红书、刷抖音、刷公众号,把看到的好选题手动记到Excel里。每天这一套操作下来,两个小时没了。
后来我用影刀RPA做了一个选题采集器,每天自动跑一次,把三个平台的热门内容抓回来,自动写入飞书多维表格。现在每天省两个小时,一个月就是60个小时。
这篇文章围绕"多平台选题采集与数据分析"这个真实案例展开,全部是我自己跑通的流程。
一、安装与准备:博主的第一套自动化工具
影刀RPA社区版免费下载,安装过程不赘述了。关键是你要明确自己的需求是什么——你要采集哪个平台、采集什么数据、用来做什么。
我建议博主们在安装完影刀之后,先做一件事:把你要采集的平台的网页版在浏览器里登录好。Cookie有了,后面的采集流程就不需要反复处理了。
浏览器插件安装完之后,在扩展管理里确认影刀插件是启用状态。我第一次装完以为自动启用了,结果捕获元素的时候怎么都抓不到,排查了很久。
界面布局:指令面板在左侧,流程画布在中间,属性面板在右侧。做选题采集的话,你最常用的是"网页自动化"和"数据处理"这两个大类的指令。
二、元素定位四合一:采集博主数据的核心技术
选题采集的本质就是:打开目标页面 → 定位到每条内容的元素 → 提取数据 → 翻页继续。
元素定位不准,后面全白搭。
元素捕获是最快的,但动态页面经常失效。小红书的页面是动态渲染的,捕获到的XPath经常过几分钟就失效了。
XPath是我采集时的主力工具。小红书笔记的XPath写法:
//div[@class='note-item'] ← 笔记卡片容器 //div[@class='title']/text() ← 提取笔记标题 //span[@class='like-count']/text() ← 提取点赞数 //a[contains(@href,'/explore/')] ← 笔记链接 //div[contains(@class,'feed-item')] ← 动态class的匹配写法 //span[text()='点赞']/following-sibling::span ← 取"点赞"后面的数字CSS选择器在小红书和抖音的页面上表现更稳定:
.div.note-item ← 笔记卡片 .div.title ← 标题 .span.like-count ← 点赞数 a[href*='/explore/'] ← 包含/explore/的链接正则表达式用在提取数字场景,比如点赞数"1.2万"要转成数字:
(\d+\.?\d*)(万|w|W) ← 匹配"1.2万"格式,要转成12000 (\d+) ← 纯数字点赞数 我当时踩过的坑:小红书的点赞数有时候显示"1.2万",有时候显示"12345",还有时候显示"点赞"。要用正则先判断格式,再决定怎么处理。
三、变量与数据类型:管理你的选题数据库
选题数据要存起来,还要做去重,变量和数据类型是基础。
字符串用来存标题、链接、作者名字。数字用来存点赞数、评论数、收藏数。
拼多多店群自动化报活动上架!
# 单条选题数据title="影刀RPA入门教程"likes=1234link="https://www.xiaohongshu.com/explore/xxx"列表用来存一批选题。我每次采集到一页20条笔记,先存在列表里,统一写入Excel。
字典用来存单条笔记的完整信息,结构化清晰:
note={"title":"影刀RPA入门教程","author":"林焱","likes":1234,"link":"https://xxx","collect_time":"2024-03-15"}JSON处理在调用平台API的时候用到。有些数据通过网页抓取拿不到(比如账号的粉丝数),可以调第三方数据平台的API,返回的是JSON格式。
importjson resp='{"code":0,"data":{"fans":12345}}'data=json.loads(resp)fans=data["data"]["fans"]我当时踩过的坑:点赞数"1.2万"存到Excel里变成了日期(Excel自动把"1.2万"识别成了"1月2日")。解决方法是在写入Excel之前,把所有数字字段转成字符串,前面加一个单引号强制当作文本。
四、流程控制:让采集流程会"思考"
选题采集不是简单的重复操作,中间有很多判断逻辑。
If条件判断用来做去重:这条笔记我已经采集过了吗?采集过了就跳过,没采集过才入库。
ifnote_linknotincollected_links:save_to_excel(note)else:print("已存在,跳过")循环是最核心的。采集20条笔记用ForEach循环,翻页采集用While循环。
While循环判断"下一页"按钮是否存在,存在就点,不存在就停止。这是我用得最多的翻页逻辑。
# While循环实现翻页采集has_next_page=Truewhilehas_next_page:collect_current_page()# 采集当前页has_next_page=check_next_page()# 检查是否有下一页ifhas_next_page:click_next_page()# 点击下一页wait(3)# 等待页面加载相似元素循环用来处理笔记列表。页面上20条笔记,用相似元素循环自动逐个处理,不用手写20次。
Try-Catch在所有数据采集步骤外面都要包一层。网络卡了、页面结构变了、弹窗出来了——这些意外情况都要能处理,不能让整个采集流程中断。
我当时没加Try-Catch,跑了一个小时的采集流程,中间遇到一个弹窗,整个流程停了。后来数据只采了一半,还要重新跑。
五、网页自动化:多平台采集的核心技巧
网页自动化在选题采集里占90%的工作量。每个平台有不同的坑,我一个个说。
等待策略:小红书和抖音都是动态页面,必须用"元素出现再继续",不能用固定等待。固定等待在网速慢的时候会出问题。
弹窗处理:小红书登录的时候会弹二维码弹窗,抖音会弹"是否允许通知"的弹窗。5步标准流程之前文章写过,不再重复。
翻页处理:小红书的"下一页"按钮在滚动到页面底部才会出现,所以翻页之前要先滚动到页面底部。
# 滚动到底部,触发"下一页"按钮出现scroll_to_bottom()wait_element_appear("下一页按钮",timeout=10)click("下一页按钮")懒加载处理:小红书首页的笔记列表是滚动加载的,滚动一次加载一批。处理方案:记录当前笔记数量 → 滚动 → 再统计数量 → 数量不变就说明加载完了。
iframe处理:抖音的登录框有时候在iframe里,要先切换进去才能操作。
窗口切换:有些平台点击笔记会打开新标签页,要用"切换到指定窗口"切换到新标签页,采集完再切回来。
六、数据处理:把采集到的选题变成有价值的信息
采集到原始数据之后,要做清洗和分析,才能真正用起来。
Excel读写:我每天把采集到的选题写入同一个Excel文件,用追加模式(不覆盖之前的)。晚上分析的时候直接打开Excel看。
# 用Python处理采集到的选题数据importpandasaspd df=pd.read_excel("选题库.xls")# 按点赞数排序,找热门选题hot_notes=df.sort_values("点赞数",ascending=False).head(20)# 按关键词筛选rpa_notes=df[df["标题"].str.contains("RPA|影刀|自动化")]文本提取与清洗:笔记标题里经常有特殊字符(emoji、换行符、引号),写入Excel之前要清洗掉,不然会报错。
importre title="影刀RPA真的太好用了!🔥"# 去掉emoji和特殊字符clean_title=re.sub(r'[^\u4e00-\u9fa5a-zA-Z0-9\s]','',title)JSON解析:有些平台的分享数据是用JSON格式存的,要解析后提取。
数据库连接:我的选题库存在MySQL里,方便按关键词、按时间、按点赞数范围查询。
七、鼠标键盘图像自动化:处理非标准场景
有些操作网页自动化完成不了,要用鼠标键盘模拟。
模拟模式和驱动模式:做选题采集一般用模拟模式就行,速度快。但如果目标平台有反爬检测,要用驱动模式,更像真人操作。
图像识别用在什么场景?有些平台的点赞数不是文字,是一张图片(很少见,但确实存在),要用OCR识别图片里的数字。
# 图像识别点击"加载更多"按钮# 有些平台的"加载更多"是Canvas绘制的,抓取不到# 用图像识别点击wait_image_appear("load_more.png")click_image("load_more.png")锚点9位置+偏移:点击的位置不对,可以用偏移调整。比如"关注"按钮,图片识别默认识别整个按钮的中心,但有些按钮点中心没反应,需要偏移几个像素。
八、进阶技能:让选题分析更智能
HTTP请求对接第三方数据平台API。新榜、飞瓜数据、蝉妈妈这些平台都有API,可以直接拿到账号数据、热门内容数据,比网页抓取稳定。
importrequests url="https://api.xxx.com/hot_list"params={"platform":"xiaohongshu","category":"科技"}headers={"Authorization":"Bearer xxxxx"}resp=requests.get(url,params=params,headers=headers)hot_list=resp.json()["data"]["list"]Python协同做情感分析:采集到评论数据之后,用snownlp做情感分析,判断用户对某个话题的态度是正面还是负面。
fromsnownlpimportSnowNLP comment="这个工具真的太好用了"s=SnowNLP(comment)print(s.sentiments)# >0.6是正面,<0.4是负面OCR文字识别用来处理笔记封面图里的文字。有些博主把核心信息写在封面图上,要用OCR识别出来。
ADB手机自动化:有些平台(小红书、抖音)在手机端的反爬比网页端松,可以用ADB控制手机做自动化。
TEMU店群矩阵自动化运营核价报活动
九、平台实战:小红书抖音公众号三平台联动
小红书采集的要点:登录态保持(Cookie)、点赞数格式转换("1.2万"转成数字)、图片封面采集(存图片链接)。
抖音采集的要点:抖音的页面是异步加载的,等待时间要设长一点(我一般设5-8秒)。视频播放量在页面源码里不一定有,要用正则从JS变量里提取。
公众号采集的要点:搜狗微信搜索(weixin.sogou.com)可以采集公众号文章。但微信的反爬很严,建议用Cookie保持登录态,并且控制访问频率。
三平台数据汇总:每个平台采集完,统一写入同一个Excel文件,字段对齐(标题、链接、点赞数、平台、采集时间)。
十、系统联动:让选题数据自动通知到你
飞书消息通知:每天采集完选题之后,自动发一条飞书消息:“今日采集选题XX条,热门选题:XXX”。
飞书多维表格:选题库存在飞书多维表格里,随时随地用手机查看。我每天早上在地铁上刷一遍昨天的选题库,挑几个值得写的。
邮件发送:把每周的热门选题汇总成报告,发邮件给自己或者团队。
定时任务:每天凌晨2点自动跑采集流程(这个时候平台流量低,反爬也松一些)。跑完自动发飞书通知。
十一、工程化与规范:博主的技术债管理
子流程封装:我把每个平台的采集流程封装成了独立的子流程(小红书采集子流程、抖音采集子流程、公众号采集子流程)。主流程按顺序调用三个子流程。
调试技巧:选题采集流程比较复杂,我会在每个平台采集完成之后加一个"打印日志",输出"小红书采集完成,共XX条"。出问题的时候一看日志就知道是哪个平台出了问题。
命名规范:变量名要有意义。platform_name比a好,note_count比b好,target_url比url1好。
版本选择:社区版够用。如果要做私有化部署(比如团队共用一套采集流程),可以考虑创业版。
流程模板化:采集流程的框架是通用的(打开网页→登录→采集→翻页→保存),不同平台只是元素定位不同。我把通用框架做成模板,新平台来了改改XPath就能用。
十二、速查表与常见报错:博主常见问题
元素定位失败:小红书的class是动态生成的,每次刷新都变。解决方法是用contains()模糊匹配,或者用文字定位。
XPath语法报错:属性值里有空格或者特殊字符,要用引号包起来。如果属性值里有引号,要用单引号包双层。
Excel报错:写入数据之前要做去重,不然同一个选题会被写入多次。去重用字典的键唯一性,或者用pandas的drop_duplicates。
循环报错:相似元素循环在页面刷新之后找不到元素。解决方法是在循环体里加等待时间,并且用Try-Catch包住每个循环体。
弹窗拦截:小红书和抖音经常弹登录弹窗、广告弹窗。要在每个关键步骤后面加弹窗检测。
IP封禁:采集频率太高会被封IP。解决方案是加随机等待时间(2-5秒),并且用代理IP池。
反爬升级:平台改版之后XPath失效。我的方案是每次运行流程之前,先手动打开目标页面,用检查元素确认XPath是否还有效。
我把自己用的选题采集XPath模板整理了一份,放在 home.linyan.cloud,需要的朋友可以去下载。
#影刀RPA #RPA教程 #自媒体工具 #选题采集 #多平台运营
作者:林焱