影刀RPA新手教程:10个真实案例带你从入门到独立开发——从简单采集到企业级自动化
带一个完全没接触过自动化的朋友学影刀,我不用讲概念,直接说"来,我们做一个自动抢优惠券的东西",他眼睛就亮了。
案例教学是我验证过最快上手的方式。
下面这10个案例,每一个都踩过坑。有些是我自己做的,有些是帮朋友排查问题时遇到的。
从第1个简简单单的点击操作,到第10个多系统联动的完整方案,难度阶梯上升。
你跟着做一遍,基本能把影刀的12个核心模块全摸透。
一、认识影刀
影刀本质上是一个"模拟人类操作"的工具。
你手动打开浏览器、点按钮、复制文字、填表格——这些动作,影刀都能替你干。
底层原理两句话:网页自动化靠Chrome插件注入JS,桌面自动化靠Windows UI Automation。
社区版免费,下载安装和装QQ一样简单。唯一需要注意的是浏览器插件必须装,不然网页操作全歇菜。

我第一次装的时候忘了装插件,在流程编辑区折腾了半个小时,"获取网页对象"一直报错,后来才发现是没装插件,尴尬。
二、案例1:自动打开百度并搜索(入门)
难度:★
这是我带新手做的第一个案例。
流程就三步:打开浏览器 → 输入关键词 → 点击搜索。
在影刀指令面板里找到"打开网页",拖到编辑区填入https://www.baidu.com。
然后用"填写输入框"指令,元素选百度搜索框,值填入"影刀RPA"。
最后用"点击网页元素"指令,点百度一下按钮。
就这么简单,点运行你就看到浏览器自动打开、输入、搜索。
这里有个小坑:如果在"打开网页"后面直接跟"填写输入框",有可能页面还没加载完就执行了,会报"元素未找到"。
解决很简单,加一个"等待网页元素"指令,等搜索框出现再操作。超时时间默认20秒,一般够用。
元素定位

影刀提供了四种定位方式,我用最多的是元素捕获和XPath。
打开元素捕获,鼠标移到网页上你要操作的地方,影刀会自动生成选择器,存到元素库。以后写流程直接拖出来选就行。
XPath适合更灵活的定位。我在实际项目中用最多的6种写法:
// 1. 按标签+属性(最常用)
//input[@id='su']
// 2. 按文本内容
//button[contains(text(),'搜索')]
// 3. 按class
//div[@class='result-list']
// 4. 按层级关系
//div[@id='container']/div[2]/a
// 5. 按属性模糊匹配
//input[contains(@class,'search')]
// 6. 取第N个
(//div[@class='item'])[3]
CSS选择器也常用,写起来更简洁:
#su /* ID选择器 */
.search-input /* class选择器 */
div[data-type="item"] /* 属性选择器 */
.container > .list > div:nth-child(3) /* 层级 */
XPath和CSS可以并列用,看个人习惯。我一般简单元素用CSS,需要匹配文本内容的时候切XPath。
三、案例2:百度热搜采集(循环+变量+Excel写入)
难度:★★
店群矩阵自动化突破运营极限!
做完第一个案例,朋友问:“那我能把百度热搜全抓下来吗?”
当然能。这个案例用到了循环控制和Excel操作。

流程思路:打开百度首页 → 获取热搜列表(相似元素) → 循环每个热搜 → 提取标题文本 → 写入Excel。
关键指令是"获取相似元素列表"。打开元素捕获,先捕获一个热搜标题元素,再"捕获相似元素"点第二个标题,影刀会识别出页面上所有热搜标题。
然后拖一个"For Each循环",对列表逐项处理。循环体里用"获取元素文本"拿标题文字。
Excel操作用"写入Excel"指令,先指定文件路径,再填入数据。影刀会自动创建文件,不需要预先建Excel。
我第一次做的时候,Excel只写进了最后一条,排查一下午才发现是"写入Excel"放在了循环外面。应该放在循环体里面,每循环一次写一行。
# Python版本的循环写Excel
from xbot import web, excel
def main(args):
browser = web.get_active()
hot_list = browser.find_all('热搜标题') # 获取相似元素列表
for title_element in hot_list:
text = title_element.get_text()
print(text) # 打印文本
四、案例3:京东商品信息采集(翻页+等待+数据处理)
难度:★★★
做电商的朋友让我帮他抓京东搜索结果。
这个案例的难点在翻页和等待。
翻页逻辑:获取"下一页"按钮 → 判断按钮是否可点击 → 能点就点,不能点就结束。
判断按钮是否可点击,可以用"获取元素属性"看class里有没有disabled。影刀里直接判断元素是否存在就行,如果翻到最后一页,"下一页"按钮会消失。 
等待策略很关键。我在京东采集上栽过两次:第一次是等加载用固定sleep(3)秒,网速慢的时候3秒不够,网速快的时候浪费时间。
后来改用"等待网页元素"指令,等商品列表加载完成后再抓。
from xbot import web
def main(args):
browser = web.get('京东', None, 'chrome') # 获取已打开的京东页面
# 滚动到底部,触发懒加载
browser.scroll_to(location='bottom', behavior='smooth')
# 等待商品元素出现
is_appear = browser.wait_appear('商品列表', timeout=20)
京东还有个坑:商品详情页的图片链接不在src属性里,在style属性的background-image里。
官方的解决方案是用JavaScript:
function (element, input) {
var url = getComputedStyle(element, null)['background-image'];
return url.substr(5, url.length–7)
}
我排查了好一阵才从官方文档里翻到这个方案。
五、案例4:小红书笔记采集(弹窗处理+滚动加载)
难度:★★★
小红书网页版有个特点:需要登录才能看完整内容。而且内容是滚动加载的,不像百度有分页。
弹窗处理:小红书打开时经常弹登录框。在影刀里用"判断网页元素是否存在"检测登录弹窗,如果存在就点关闭按钮。
滚动加载的处理:用"执行JavaScript"让页面持续滚动,每次滚动后等待新内容加载。
from xbot import web
def main(args):
browser = web.get('小红书', None, 'chrome')
# 持续滚动10次,每次滚动到底部

for i in range(10):
browser.scroll_to(location='bottom', behavior='smooth')
页面滚动后,之前获取的相似元素可能失效。原因是滚动后DOM更新了,老的元素引用已经不对了。
解决方法:改用For次数循环,每次循环重新获取相似元素列表,用下标访问当前项。
这个在影刀官方文档里有详细说明,叫"网页有刷新行为场景"的处理方案。我第一次遇到的时候,流程跑一半就报"未找到指定ID的元素",后来才搞清楚是这回事。
六、案例5:批量下载网页图片(图像自动化)
难度:★★
朋友做设计,需要批量下载花瓣网的素材图片。
捕捉图片元素时,影刀会提示捕获的是"图像"。然后"捕获相似元素"就能拿到页面上所有图片。
获取图片链接有两种方式:
- 获取元素的src属性(简单但不一定完整)
- 执行JavaScript获取element.src(更可靠)
from xbot import web
def main(args):
browser = web.get_active()
# 获取所有图片相似元素
img_list = browser.find_all('商品图片')
for img in img_list:
src = img.get_attribute('src') # 获取src属性
# 如果src不完整,拼接前缀
if not src.startswith('http'):
src = 'https:' + src
一个小细节:有些图片链接不带https:前缀,需要手动拼接。我第一次没拼接,下载下来全是0KB的文件,排查半天。
七、案例6:Excel数据批量录入到网页表单(数据处理+流程控制)
难度:★★★

财务朋友的需求:每天要把Excel里的发票信息一条条填到公司报销系统里。
这个案例的核心是数据读写结合:读取Excel → 循环每行数据 → 打开网页 → 逐项填写 → 提交。
Excel读取用"读取Excel"指令,可以整表读取,也可以按范围读取。读取后得到一个二维列表。
流程控制:每填完一条,判断提交是否成功。如果失败,记录到"失败列表",继续处理下一条。
from xbot import excel, web
def main(args):
# 读取Excel数据
data = excel.read('D:\\\\发票数据.xlsx')
browser = web.get('报销系统', None, 'chrome')
for row in data:
try:
# 填写表单各字段
browser.find('发票号码').input_text(row[0])
browser.find('发票金额').input_text(row[1])
browser.find('提交按钮').click()
except Exception as e:
print(f'录入失败: {row[0]}, 错误: {e}')
Try-Catch在这里特别有用。不能因为一条数据出错就让整个流程停下来。
我第一次没用异常处理,跑到第36条时网页弹了个错误提示,后面的全没填。白跑了一上午。
八、案例7:网页监控+飞书通知(HTTP请求+系统联动)
难度:★★★★
一个做运营的朋友想监控竞品价格,价格变化了就发飞书通知。
这个案例涉及:定时任务、网页数据采集、数据处理对比、飞书消息发送。
飞书通知用飞书的Webhook机器人。在飞书群聊设置里找到"群机器人",添加自定义机器人,复制Webhook地址。

在影刀里用"HTTP请求"指令,POST到这个地址,body是飞书规定的JSON格式:
from xbot import http
import json
def main(args):
webhook_url = 'https://open.feishu.cn/open-apis/bot/v2/hook/xxx'
msg = {
"msg_type": "text",
"content": {
"text": "商品A价格从99元降到79元,降幅20%"
}
}
resp = http.post(webhook_url, json=msg)
上一步采集的价格和之前存储的价格做对比,变化超过阈值就发通知。
定时任务:影刀支持在控制台设置定时运行。新建一个计划,设置每天几点执行,指定机器人跑就行。
九、案例8:Python协同处理复杂数据(进阶技能)
难度:★★★★
网页上抓下来的JSON数据,用影刀自带的指令处理起来比较繁琐。
影刀支持写Python代码块,直接在流程里跑Python。这个太香了。
比如从淘宝接口返回的JSON里提取商品信息:
from xbot import http, print
import json
def main(args):
# 发送HTTP请求获取淘宝商品数据
resp = http.get('https://api.example.com/items')
data = json.loads(resp.text)
# Python处理复杂数据结构
result = []
for item in data['items']:
result.append({
'id': item['item_id'],
'title': item['title'],
'price': float(item['price']) / 100,
'sold': item['sold']
})
# 按销量排序
result.sort(key=lambda x: x['sold'], reverse=True)
print('前10热销:', result[:10])
Python代码块能访问影刀的所有模块:xbot.web、xbot.excel、xbot.http、xbot.print等。
temu店群自动化报活动案例

我之前处理一个JSON嵌套了5层的数据,用影刀自带指令写了40多步。后来换成Python代码块,15行搞定。
十、案例9:OCR识别验证码(OCR+图像自动化)
难度:★★★
有些老旧网站登录需要验证码,不能自动识别的话流程就断了。
影刀自带了AI文字识别服务,企业版有20元额度,社区版1元额度,够测试用。
OCR支持的识别类型包括:通用文字识别(标准版/高精度版/精简版/高速版)、卡证识别(身份证/银行卡/增值税发票/火车票/车牌)、表格识别。
流程:截图 → OCR识别 → 提取验证码 → 填入输入框。
from xbot import image
def main(args):
# 对指定区域进行OCR识别
text = image.ocr(region=(100, 200, 300, 400))
print(f'识别结果: {text}')
我实际用的不多,因为我主要做电商数据采集,大部分平台验证码都能绕过。不过财务报销系统常有验证码,这时候OCR就派上用场了。
额度超出后会报错,需要去个人中心充值。这个在官方文档里明确写了。
十一、案例10:多平台数据采集+定时报告(工程化实践)
难度:★★★★★
最后一个综合案例:每天早上8点自动采集淘宝、京东、拼多多三个平台的商品数据,写入Excel,生成对比报告,发飞书通知。

这个案例把前面9个案例的技能全串起来了。
工程化要点:
子流程:把每个平台的数据采集拆成独立子流程。主流程负责调度,子流程负责执行。这样某个平台出问题不会影响其他平台。
命名规范:不要用"变量1""变量2"这种命名。taobao_data、jd_data、pdd_data一目了然。
版本管理:每次发版前在影刀控制台打好版本号。回滚的时候直接回退到上一个版本,不用重新写。
调试技巧:在关键节点加"打印日志"指令,出了问题能快速定位在哪一步断的。
from xbot import web, excel, http, print
import datetime
def main(args):
try:
# 调用子流程(通过影刀的流程调用指令)
print('开始采集淘宝数据…')
taobao_result = call_sub_flow('淘宝采集子流程')
print('开始采集京东数据…')
jd_result = call_sub_flow('京东采集子流程')
# 汇总写入Excel
today = datetime.date.today().strftime('%Y%m%d')
excel.write(f'D:\\\\报表\\\\{today}_汇总.xlsx', taobao_result + jd_result)
# 发送飞书通知
send_feishu_notify(f'报告已生成: {today}_汇总.xlsx')
except Exception as e:
print(f'流程异常: {e}')
我犯过的错误:一开始把所有代码写在一个流程里,200多步,调一次要跑20分钟,找bug找到怀疑人生。
拆成子流程后,单独调试淘宝采集只需要跑淘宝部分,几分钟就能定位问题。
十二、速查表与常见报错
元素定位速查
| 快速定位一个元素 | 元素捕获 | 鼠标点一下就生成 |
| 按class找一批元素 | CSS选择器 | div.product-item |
| 按文本内容找元素 | XPath | //span[contains(text(),'搜索')] |
![]() |
| 找一个区域内的元素 | 关联父元素 | 获取父元素对象再关联查找 | | 需要匹配复杂条件 | XPath组合 | //div[@class='list']//a[@data-id] |
网页自动化速查
| 等待页面加载 | wait_appear | 等元素出现再操作,比sleep靠谱 |
| 滚动加载内容 | scroll_to(location=‘bottom’) | 支持smooth平滑滚动 |
| 处理弹窗 | is_element_displayed | 先判断弹窗是否存在,存在就点掉 |
| 翻页采集 | For次数循环+重新获取元素 | 每次循环重新获取相似元素列表 |
| 判断元素是否存在 | contains_element | 返回True/False |
| 激活网页 | activate | 多标签页时激活目标页 |
| 关闭网页 | close | 操作完关闭释放资源 |
| 执行JS | execute_javascript | 灵活处理各种前端事件 |
常见报错
- “未找到指定ID的元素”:元素定位信息变了,页面刷新或DOM更新后需要重新获取元素。改用For次数循环,每次循环重新获取相似元素列表
- “网页元素等待超时”:页面加载太慢或网络问题,加大超时时间到30秒,或者加网络检测
- “变量未定义”:变量名写错了或者变量作用域不对,检查变量是在哪个流程块里定义的
- “索引超出范围”:循环时数组为空或者下标越界,在循环前加判断数组长度
- “OCR额度不足”:去影刀客户端个人中心充值
学到这,你已经能做市面上80%的自动化需求了。
剩下的20%,靠积累和看官方文档。
我的经验是:不要一开始就追求完美的工程化方案,先用最简单的方式做出一个能跑的版本,再慢慢优化。
影刀的官方文档在官网可以找到,社区版足够学习使用。
更多进阶内容可以关注影刀RPA学习主页:home.linyan.cloud
#影刀RPA #RPA教程 #新手入门 #自动化 #案例教学
作者:林焱。







