影刀RPA新手教程:快手数据采集实战——短视频账号数据与作品信息
认识影刀与安装
影刀客户端装好之后,确认一件事:Chrome版本和影刀内置浏览器版本一致。版本不一致操作快手网页时白屏或元素定位全废。安装路径别带中文别带空格,"C:/Program Files (x86)/影刀"这种路径后面Excel操作、文件下载全报错。装完重启一次电脑,影刀有些驱动需要重启才生效。
home.linyan.cloud 整理了各平台采集模板,快手那个直接导入改URL就能跑。
元素定位四合一
快手页面的元素定位和B站不同,快手重度依赖动态class和React渲染。
CSS选择器定位:快手粉丝数在.user-info-fans这个元素下,但class名每隔几周就变一次。用XPath更稳——粉丝数定位用//span[contains(text(),"粉丝")]的父节点下第一个数字span。XPath定位:作品列表每条视频卡片用//div[@class="video-item"]//span[@class="play-count"],注意快手有些页面class是自动生成的hash值,别硬编码。相似元素组:快手作品列表一屏显示6-8条,用"捕获相似元素"框选整个视频卡片区域,一次获取所有作品信息。ID定位:快手个人主页的唯一标识在URL里(快手ID),页面内没有固定ID锚点,这个方式用不
上。
踩坑重点:快手页面是React SPA,元素节点层级嵌套特别深,经常7-8层div套div。捕捉元素时影刀默认选到最内层节点,校验不稳定。手动在元素编辑器里把中间那些通用div层级去掉,只留tag+关键属性,校验成功率翻倍。
另一个坑:快手点赞数/评论数这些数据有时候在父元素的title属性里,不在文本节点里。用「获取元素属性」取title属性值比「获取元素文本」更靠谱。
变量与数据类型
快手采集流程需要的核心变量:
account_url:字符串,快手账号主页URLaccount_name:字符串,账号昵称fans_count:整数,粉丝数(原始文本"256.3万"需转换)video_cards:列表,相似元素组(所有视频卡片)current_play:整数,单个作品播放量current_like:整数,单个作品点赞数current_comment:整数,单个作品评论数growth_data:字典,按日期存储的成长数据output_excel:Excel对象,输出文件
快手的数据格式更杂:粉丝数有"256.3万"和"1.2亿"两种,播放量有"23.4万"和纯数字"34521"两种混着用。写一个通用数字解析子流程,输入原始字符串,输出整数。逻辑是:判断是否包含"万"→去除→乘10000;判断是否包含"亿"→去除→乘100000000;都不包含直接转整数;遇到空值或"–"返回0。
字典growth_data的结构:{"2024-03-15": {"fans": 256300, "works_count": 42, "avg_play": 12000, "avg_like": 800}}。每天跑一次这个流程,往字典里追加一条记录,用Excel写入不同sheet页,就能看出粉丝增长曲线。
流程控制
主流程逻辑:
- 打开浏览器 → 打开快手账号主页
- 获取账号昵称/粉丝数 → 存入变量
- 滚动加载全部作品(无限循环+条件退出)
- 捕获作品相似元素组 → For循环遍历
- 每条作品获取播放量/点赞数/评论数 → 存入列表
- 计算平均值 → 写入Excel当前sheet页
- 判断是否需要采集下一个账号(列表循环)
滚动加载是快手最关键的流程控制点。快手作品列表不是分页的,是无限滚动加载。逻辑:无限循环 → 鼠标滚动到底部 → 延迟5秒 → 获取当前作品卡片数量 → 和上一次数量对比 → 不变则到底退出。快手比B站更慢,每次滚动后必须5秒以上等待,3秒不够数据加载不出来。
For次数循环和无限循环的区别:For次数循环适合已知数量场景(如遍历30条商品),无限循环适合不确定数量场景(如滚动加载)。快手的滚动加载用无限循环+退出条件判断,作品遍历用For次数循环遍历相似元素组。
网页自动化
快手网页自动化三大坑:懒加载、弹窗、SPA路由。
懒加载前面说了。弹窗处理:快手PC端经常弹出"下载APP"弹窗或登录提示,在流程开头加判断——「判断元素是否存在」检测弹窗关闭按钮,存在就点击关闭。这个判断放在每次滚动和每次点击操作前,不是只放一次。
SPA路由:快手点击作品进入详情页不是新开标签页,是同页面路由跳转。这意味着点击后"返回"不是浏览器后退按钮,而是页面上的返回按钮。用XPath定位//div[contains(@class,"back-btn")]或直接用键盘Esc键返回。踩过坑:用浏览器后退会回到快手首页而不是作品列表。
iframe场景:快手有些页面内嵌iframe(如广告位),元素捕捉时影刀可能选到iframe里的元素。如果校验时发现元素在iframe节点下,切到iframe内部再捕捉,或者干脆排除iframe层级。
网页监听方案:快手的数据接口是api.kuaishou.com/rest/n/feed/profile,用F12找到这个请求,影刀里用监听模式直接拿JSON。监听比元素抓取快5倍,但接口可能有反爬检测,新手先用元素抓取跑通再升级。
数据处理
数字解析子流程是快手采集的核心数据处理模块。完整逻辑:
输入:raw_text(原始字符串,如"256.3万粉丝")
步骤1:字符串替换"粉丝"为空 → “256.3万”
步骤2:If判断是否包含"亿" → 是:替换"亿"为空→转浮点→乘1e8→转整数
步骤3:If判断是否包含"万" → 是:替换"万"为空→转浮点→乘1e4→转整数
步骤4:Else → 直接转整数
步骤5:异常处理:转换失败返回0
列表数据聚合:遍历完成后,从所有作品的播放量列表中计算平均值。用影刀的「列表求和」和「列表长度」指令,总和除以数量得到平均值。互动率计算:点赞数/播放量的比值,用浮点数运算保留2位小数。
日期格式处理:快手作品发布时间显示"3天前"“2周前”,不是标准日期。需要转换逻辑——获取当前日期(影刀内置变量current_date),根据"X天前"往前推算具体日期。写一个子流程专门做这个转换,输入"3天前",输出"2024-03-12"。
鼠标键盘图像自动化
快手页面的鼠标操作比B站多,因为要频繁滚动和点击视频卡片。
鼠标滚动:方向向下,距离800像素,次数3次。快手的滚动触发比B站敏感,一次滚动可能加载10条以上。滚动后延迟5秒不是3秒——快手服务器响应慢。
键盘操作:Esc键返回详情页、Ctrl+A全选文本框(采集描述信息时)、Tab键切换输入焦点。影刀「键盘输入」指令支持组合键,Ctrl+Tab切换浏览器标签页。
图像自动化备用:快手改版后元素定位失败时,截取关键按钮的图像作为图像点击目标。“返回按钮”“关闭弹窗按钮”"翻页箭头"各截一张图备用。图像识别的缺点是不支持相似元素循环,只能单点操作。
进阶技能
网页监听采集快手API数据:
- F12 → Network → 筛选XHR请求
- 找到
graphql或rest/n/feed类型的API - 影刀:获取网页对象 → 开始监听请求 → 传入URL模式 → 延迟5秒 → 获取监听结果 → 停止监听
- 结果是字典,取
["body"]→ 字符串转JSON对象 - JSON结构里直接取
fanCount、videoList等字段
正则表达式:快手作品标题有些带"#话题标签",采集时需要把标签去掉。正则#[^#]+#匹配所有话题标签,用字符串替换清空。发布时间字段正则\d+[天小时周月年]前匹配相对时间,用来触发日期转换子流程。
全局变量在元素编辑中的应用:快手账号URL作为全局变量传入元素定位。如果元素里有账号ID相关的属性值,用全局变量替代固定文本,换账号采集时只改全局变量值就行。
平台实战
快手采集实战要点:
- PC端快手网页功能不全,部分数据只能APP端看到。PC端能采集:粉丝数、作品列表、播放量、点赞数、评论数
- 快手反爬比B站严,连续采集超过30个账号会触发IP限制。加账号间隔5秒,超过30个换IP(用影刀内置浏览器切换代理)
- 作品详情页有些视频是"付费课程",点击后弹出付费弹窗。判断弹窗存在就关闭并跳过这条
抖音采集同理:打开抖音创作者主页 → 滚动加载 → 相似元素遍历 → 数据写入Excel。抖音的反爬更严,验证码频率更高,建议用监听模式抓取API数据而不是元素操作。
小红书采集:笔记列表是瀑布流布局,元素结构比快手更复杂。需要关联父元素找子元素——先捕捉笔记卡片父元素组,再在每个父元素内部找标题和点赞数子元素。
系统联动
采集数据写入Excel后和飞书/钉钉联动:
飞书多维表格:比Excel更适合团队协作。影刀支持飞书多维表格的写入操作——获取多维表格的app_token和table_id,用HTTP请求POST数据。每条采集结果写入一行,团队成员直接在飞书看最新数据。
飞书Webhook告警:粉丝增长超过5%自动发飞书消息。影刀流程结尾加判断——当前粉丝数和上次采集的粉丝数对比,增长率超过5%就触发HTTP请求POST飞书Webhook。
钉钉机器人类似配置,群设置→添加机器人→拿Webhook URL→影刀HTTP请求POST。
邮件联动:影刀支持「发送邮件」指令,采集完成后自动发邮件给运营团队。附件带上Excel文件,邮件正文写采集摘要。
工程化与规范
流程拆分规范:
- 主流程:
kuaishou_account_collector(整体调度) - 子流程1:
ks_number_parser(数字解析) - 子流程2:
ks_date_converter(日期转换) - 子流程3:
ks_scroll_loader(滚动加载) - 子流程4:
ks_feishu_writer(飞书写入)
变量命名:ks_前缀表示快手相关,raw_表示原始未处理数据,parsed_表示处理后数据,out_表示输出。
异常处理策略:所有网页操作指令设超时10秒(快手慢),超时后重试一次,再超时跳过当前项继续。「获取元素」指令的高级选项里设超时时间,默认3秒太短。
多账号采集用列表循环:把所有账号URL放在Excel或列表变量里,外层循环遍历账号列表,内层循环遍历每个账号的作品。账号间加5秒延迟防反爬。
速查表与常见报错
| 报错 | 原因 | 解决 |
|---|---|---|
| 元素校验失败 | 快手改版class变了 | 去掉hash类class,用xpath+contains |
| 粉丝数抓到空 | 元素在title属性不在文本 | 用获取元素属性取title值 |
| 滚动后数据全空 | 未等加载完成 | 延迟5秒以上 |
| SPA页面返回失败 | 用了浏览器后退 | 改用页面返回按钮或Esc键 |
| iframe干扰 | 广告iframe遮挡 | 元素编辑排除iframe层级 |
| NoneType object | 变量未赋值 | 流程开头初始化所有变量 |
| 数值转换报错 | "256.3万"无法直接转整数 | 用数字解析子流程 |
| 日期格式不对 | "3天前"非标准格式 | 用日期转换子流程 |
| IP被限制 | 连续采集超过30账号 | 账号间隔5秒+换代理 |
| 付费弹窗阻断 | 点击了付费课程视频 | 判断弹窗存在→关闭→跳过 |
核心指令速查:
- 打开网页 / 获取网页对象 / 关闭网页
- 捕获相似元素 / 循环相似元素 / 获取相似元素列表
- 获取元素属性 / 获取元素文本(优先用属性取值)
- 鼠标滚动 / 键盘输入(Esc返回) / 延迟执行(5秒)
- 判断元素是否存在 / If条件判断 / 退出循环
- 字符串替换 / 正则匹配 / 转整数 / 转浮点数
- 列表求和 / 列表长度 / 列表聚合
- 启动Excel / 写入Excel / 保存Excel
- 开始监听请求 / 获取监听结果 / 停止监听
- HTTP请求(飞书Webhook) / 发送邮件
内容标签:影刀RPA / 快手数据采集 / 懒加载滚动 / SPA页面 / 相似元素 / 数字解析 / 飞书告警 / 多账号批量 / 反爬处理 / 日期转换
作者:林焱