影刀RPA零基础学习手册:新手从入门到独立开发的完整路径
作者:林焱 | 影刀RPA技术专栏
标签: 影刀RPA / 零基础入门 / RPA学习路线 / 自动化开发 / 新手教程
适合读者: 完全没有编程基础、想通过影刀RPA实现工作自动化的职场人
写在前面:这本手册能帮你做什么?
也许你是一个每天都在重复做同样工作的职场人:
- 每天从系统里导出数据,粘贴到Excel里做报表
- 每周批量发几百封邮件或消息
- 每月花几天时间做对账、核对数据
- 经常需要从网上采集商品价格、竞品信息
这些重复的、有规律的工作,都可以让影刀RPA替你做。
这本手册不假设你有任何编程基础。我会从"什么是RPA"开始,一步一步带你到"能够独立开发完整自动化项目"的水平。
让我们开始吧。
第一章:RPA是什么?影刀又是谁?
1.1 RPA——让软件机器人替你工作

RPA(Robotic Process Automation,机器人流程自动化)不是真实的物理机器人,而是在电脑上运行的软件机器人。
这个机器人能做的事和你完全一样:
- 打开浏览器,访问网页
- 点击按钮,填写表单
- 读取Excel数据,写入Excel数据
- 复制粘贴内容
- 发送邮件、消息
- 截图、识别文字
与普通宏/脚本的区别:
| 学习门槛 | 中(需懂VBA) | 高(需学Python) | 低(可视化拖拽) |
| 能操作界面 | 仅Excel | 有限 | 任何软件 |
| 维护难度 | 中 | 高 | 低 |
| 适合人群 | Office用户 | 程序员 | 所有人 |
1.2 影刀RPA是什么?
影刀RPA是由影刀科技(杭州群核信息技术)开发的国产RPA平台,以下是其核心特点:
平台特点:
- 🎯 低代码可视化:主要通过拖拽指令完成流程搭建
- 🔌 内置能力丰富:浏览器、Excel、邮件、文件、API、OCR等开箱即用
- 🐍 Python扩展:复杂逻辑可用Python代码块实现
- ☁️ 云端管理:支持云端部署和远程监控
- 💰 价格亲民:有免费版本,企业版价格合理
适用场景:
- 数据采集与录入
- 报表生成与分发
- 系统对接与同步
- 批量文件处理
- 定时自动化任务
1.3 安装与注册
访问官网:https://www.yingdao.com/
点击「免费下载」,选择Windows版本
安装完成后注册账号(手机号注册)
在这里插入图片描述
登录后进入编辑器,即可开始创建流程
第二章:认识影刀编辑器(界面导航)
打开影刀RPA编辑器,你会看到这样的界面:
┌─────────────────────────────────────────────────────┐
│ 菜单栏(文件/运行/调试/设置) │
├──────────┬───────────────────────────┬──────────────┤
│ │ │ │
│ 指令面板 │ 画布(流程图区域) │ 属性面板 │
│(左侧) │ (中间拖拽区) │(右侧参数) │
│ │ │ │
├──────────┴───────────────────────────┴──────────────┤
│ 底部:输出日志 / 调试信息 │
└─────────────────────────────────────────────────────┘
2.1 指令面板——你的工具箱
左侧指令面板按类别组织了所有可用指令:
| 浏览器 | 打开网页、点击元素、输入文本、获取文本 | ⭐⭐⭐⭐⭐ |
| Excel操作 | 读取/写入单元格、筛选、排序、图表 | ⭐⭐⭐⭐⭐ |
| 流程控制 | if/for/while/try-catch | ⭐⭐⭐⭐⭐ |
| 变量操作 | 赋值、字符串处理、列表/字典 | ⭐⭐⭐⭐ |
| 文件操作 | 读写文件、移动复制、重命名 | ⭐⭐⭐⭐ |
| 消息通知 | 发送邮件、企业微信、钉钉 | ⭐⭐⭐ |
| 图像识别 | OCR识别、截图、找图点击 | ⭐⭐⭐ |
| 代码执行 | Python代码块 | ⭐⭐⭐ |
2.2 画布——流程搭建区
画布是你搭建流程的地方,使用流程图的方式组织指令:
- 从左侧拖拽指令到画布
- 指令之间用连线表示执行顺序
- 可以缩放、移动、对齐
拼多多店群自动化报活动上架!
2.3 属性面板——配置指令参数
点击任意指令,右侧属性面板会显示该指令的所有可配置参数。大多数参数都有中文说明,看名称就能理解。
第三章:第一个RPA流程——自动搜索关键词
让我们跟着做一个超简单的流程:打开百度,搜索"影刀RPA",截图保存。
步骤1:创建新流程
步骤2:添加"打开浏览器"指令
- URL:https://www.baidu.com
- 浏览器类型:Chrome(推荐)
步骤3:添加"输入文本"指令
步骤4:添加"点击元素"指令
步骤5:添加"等待"指令
步骤6:添加"截图"指令

步骤7:运行测试
点击顶部工具栏的「运行」按钮,观察流程执行情况。
如果流程正常运行:
- 自动打开浏览器
- 进入百度
- 输入"影刀RPA"
- 点击搜索
- 保存截图
🎉 恭喜你完成了第一个RPA流程!
第四章:核心概念详解
4.1 变量——存储数据的容器
变量是RPA流程的核心,用来临时存储和传递数据。
创建变量:
- 在属性面板点击变量输入框旁的「+」按钮
- 或在左侧变量面板点击「添加变量」
变量类型:
字符串(String): "你好世界"
整数(Integer): 42
浮点数(Float): 3.14
布尔值(Boolean): True / False
列表(List): ["苹果", "香蕉", "橙子"]
字典(Dict): {"姓名": "张三", "年龄": 25}
实际使用示例:

// 1. 先定义变量
变量名:search_keyword
初始值:影刀RPA教程
// 2. 在指令中引用变量(用大括号)
输入文本 → 文本内容:{{search_keyword}}
// 3. 修改变量值
赋值指令 → 变量:search_keyword → 新值:Python入门
4.2 循环——重复执行的魔法
循环让你能够处理批量数据,是RPA最强大的能力之一。
For循环示例:
场景:处理Excel中100行数据,每行都做相同的操作
// 读取Excel所有行到变量 all_rows(类型:列表)
读取Excel → 存入变量:all_rows
// 遍历每一行
For 循环 → 遍历变量:all_rows → 当前项变量名:current_row
│
├── 获取姓名:current_row["姓名"]
├── 获取邮箱:current_row["邮箱"]
└── 发送邮件(使用上面的变量)
While循环示例(翻页采集):
// 持续翻页,直到没有下一页为止
变量:has_next_page = True
变量:page_num = 1
While循环 → 条件:has_next_page == True
│
├── 采集当前页数据
├── 检查"下一页"按钮是否存在
├── If 下一页存在:
│ ├── 点击下一页
│ └── page_num += 1
└── Else:
└── has_next_page = False(结束循环)
4.3 条件判断——让流程有"智慧"
// 场景:采集价格,低于100元才收藏
获取商品价格 → 存入变量:price
If 条件:price < 100
├── True分支:点击收藏按钮
└── False分支:跳过,继续下一个
4.4 异常处理——让流程更健壮
// 场景:采集页面,某些页面可能加载失败
Try 尝试执行:
├── 打开商品页面
├── 获取商品信息
└── 写入Excel
Catch 出错时:
├── 记录错误日志:{error_message}
├── 截图保存现场
└── 继续下一个(不中断整体流程)
Finally(无论成功失败都执行):
└── 等待1秒,让网页恢复
4.5 子流程——代码复用的关键
// 主流程
主流程:采集商品数据
├── 调用子流程:login_shop(登录商店)
├── For循环处理每个商品:
│ └── 调用子流程:scrape_product(采集单个商品)
├── 调用子流程:save_to_excel(保存数据)
└── 调用子流程:send_report(发送报告)

// 子流程:login_shop
1. 打开登录页
2. 输入账号密码
3. 点击登录
4. 等待登录成功
5. 返回"登录成功"标志
第五章:元素捕获——让RPA认识界面
5.1 什么是元素捕获?
元素捕获是告诉RPA"在哪里点击/输入/读取"的过程。
每个网页元素(按钮、输入框、文字等)都有自己的"身份证"——选择器,影刀通过这个选择器找到并操作对应元素。
5.2 捕获方法
方法一:可视化捕获(推荐新手)
方法二:元素侦测器(精确模式)
5.3 选择器类型对比
| CSS选择器 | #login-btn | 简洁,速度快 | 动态ID可能变化 |
| XPath | //button[@class='login'] | 功能强大 | 语法复杂 |
| 文本匹配 | text:登录 | 稳定,不依赖样式 | 有重名文本时不准 |
| 图像识别 | 截图匹配 | 无需选择器 | 速度慢,不稳定 |
5.4 应对选择器失效的技巧
网站更新后选择器可能失效,解决方法:

# 策略1:使用多个备选选择器
selectors = [
"#login-btn", # 主选择器
".btn-primary[type=submit]", # 备选1
"button:contains('登录')", # 备选2(文本匹配)
]
for selector in selectors:
if page.is_element_exist(selector):
page.click(selector)
break
# 策略2:使用包含关系定位(更稳定)
# 先定位父容器,再在其中找子元素
parent = page.find_element(".login-form")
login_btn = parent.find_element("button[type=submit]")
# 策略3:等待元素出现再操作
page.wait_for_element("#login-btn", timeout=10)
page.click("#login-btn")
第六章:实战项目——电商价格监控系统
综合运用前面学到的知识,从零搭建一个完整项目。
6.1 需求分析
目标: 每天自动采集竞品商品价格,与昨日价格对比,生成价格变动报告发到企业微信。
流程设计:
开始
↓
读取待监控商品列表(Excel)
↓
For循环处理每个商品
↓
打开商品页面
↓
获取当前价格、库存状态
↓
与历史价格对比
↓
记录变动情况
↓(结束循环)
生成价格变动报告(Excel)
↓
发送企业微信通知
↓
结束
6.2 准备工作
创建商品列表Excel(input.xlsx):
| 商品A | https://… | 299 | 竞品一 |
TEMU店群矩阵自动化运营核价报活动
| 商品B | https://… | 199 | 竞品二 |

6.3 核心代码实现
# 以下代码放入影刀的"代码执行"指令块中
import datetime
import time
import random
def get_price_from_element(page, price_selector: str) –> float:
"""从页面获取并解析价格"""
try:
price_text = page.get_text(price_selector)
# 清理价格文本:去掉¥、,、空格等
price_clean = price_text.replace("¥", "").replace(",", "").strip()
# 提取数字部分
import re
numbers = re.findall(r'\\d+\\.?\\d*', price_clean)
if numbers:
return float(numbers[0])
except Exception as e:
print(f"获取价格失败:{e}")
return 0.0
def compare_prices(current_price: float, yesterday_price: float) –> dict:
"""比较今日与昨日价格"""
if yesterday_price == 0:
return {"change": "新增", "diff": 0, "diff_pct": 0, "alert": False}
diff = current_price – yesterday_price
diff_pct = diff / yesterday_price * 100
# 价格变动超过5%才告警
alert = abs(diff_pct) >= 5
if diff > 0:
change = f"涨价 +¥{diff:.2f} (+{diff_pct:.1f}%)"
elif diff < 0:
change = f"降价 -¥{abs(diff):.2f} ({diff_pct:.1f}%)"
else:
change = "价格不变"
return {
"change": change,
"diff": diff,
"diff_pct": diff_pct,
"alert": alert
}
def monitor_product_price(page, product: dict) –> dict:
"""
监控单个商品价格
product: {"name": …, "url": …, "yesterday_price": …, "selector": …}
"""
result = {
"name": product["name"],
"url": product["url"],
"yesterday_price": product["yesterday_price"],
"today_price": 0,
"change": "采集失败",
"status": "error"
}
try:
page.open(product["url"])
page.wait_for_load(timeout=15)
# 随机等待(模拟人类行为)
time.sleep(random.uniform(1.5, 3.5))
# 获取价格
price_selector = product.get("selector", ".price")
today_price = get_price_from_element(page, price_selector)
if today_price > 0:
result["today_price"] = today_price
comparison = compare_prices(today_price, product["yesterday_price"])
result["change"] = comparison["change"]
result["diff_pct"] = comparison["diff_pct"]
result["alert"] = comparison["alert"]
result["status"] = "success"
else:
result["change"] = "价格获取失败"
result["status"] = "partial_failure"
except Exception as e:
result["error"] = str(e)
result["status"] = "error"
print(f"采集失败 {product['name']}:{e}")
return result
# ===== 主逻辑 =====
# (以下变量由影刀流程传入)
# products_list: 从Excel读取的商品列表
# page: 影刀浏览器页面对象
results = []
alerts = []
for product in products_list:
print(f"正在采集:{product['name']}")
result = monitor_product_price(page, product)
results.append(result)
# 有显著价格变动的加入告警列表
if result.get("alert"):
alerts.append(result)
# 每采集一个商品等待一下
time.sleep(random.uniform(2, 4))
# 汇总结果
summary = {
"date": datetime.date.today().isoformat(),
"total": len(results),
"success": sum(1 for r in results if r["status"] == "success"),
"alerts": len(alerts),
"results": results,
"alert_items": alerts
}
# 将summary传给下一步(保存Excel、发消息)
output_data = summary
6.4 生成报告并发送通知
# 生成Markdown格式的价格变动通知
def build_price_report_markdown(summary: dict) –> str:
date = summary["date"]
total = summary["total"]
success = summary["success"]
alerts = summary["alert_items"]
# 告警商品列表
alert_lines = ""
if alerts:
for item in alerts[:10]:
icon = "📈" if item["diff_pct"] > 0 else "📉"
alert_lines += f"- {icon} **{item['name']}**:¥{item['today_price']} ({item['change']})\\n"
else:
alert_lines = "> 今日无显著价格变动\\n"
return f"""## 📊 价格监控日报 {date}
**监控总数:** {total} 件 | **成功采集:** {success} 件 | **价格预警:** {len(alerts)} 件
### ⚠️ 价格变动预警
{alert_lines}
[📎 查看完整Excel报告](http://intranet/price-reports/{date})
*自动播报 by 影刀RPA*
"""
第七章:常见问题与解决方案
7.1 元素找不到
症状: 报错"找不到元素"或"元素超时"
排查步骤:
# 常用解决方案
# 1. 增加等待时间
page.wait_for_element("#target", timeout=15) # 等待15秒
# 2. 等待页面加载完成再操作
page.wait_for_load()
time.sleep(1) # 额外等1秒确保JS执行
# 3. 切换到iframe
page.switch_to_frame("iframe#content")
page.click("#target") # 现在在iframe内操作
page.switch_to_main_frame() # 操作完切回主页面
7.2 流程突然中断
症状: 流程运行到一半停止,没有错误信息

排查思路:
- 查看底部日志面板,找到最后执行的指令
- 检查是否有未处理的弹窗/对话框
- 检查内存使用(大量数据处理时内存溢出)
- 检查网络连接是否正常
7.3 数据写入Excel乱码
解决方案:
# 方法一:指定编码
excel.write_cell("Sheet1", "A1", text_data.encode("utf-8").decode("gbk"))
# 方法二:使用openpyxl库
import openpyxl
wb = openpyxl.load_workbook("output.xlsx")
ws = wb.active
ws["A1"] = text_data # openpyxl自动处理编码
wb.save("output.xlsx")
7.4 速度太慢
优化建议:
| 固定等待时间过长 | 改用智能等待(等待元素出现) | 50%+ |
| Excel逐行读写 | 改为批量读写 | 60-80% |
| 每次操作新开浏览器 | 复用浏览器实例 | 40% |
| 串行处理可并行化 | 多窗口/多流程并发 | 3-5倍 |
第八章:学习资源与进阶路线
8.1 官方资源
- 官方文档:https://www.yingdao.com/docs/
- 视频教程:影刀官方B站频道
- 社区论坛:影刀RPA官方社群
8.2 推荐学习路线

第1周:基础操作
└── 安装配置、界面熟悉、第一个流程
第2周:核心指令
└── 浏览器操作、Excel读写、变量使用
第3周:流程控制
└── if/for/while、异常处理、子流程
第4周:实战项目
└── 选一个实际工作场景,端到端完成一个流程
第5-6周:进阶特性
└── Python代码块、OCR识别、API调用
第7-8周:工程化
└── 配置管理、日志系统、定时部署
8.3 新手最容易踩的坑
| 选择器不稳定 | 页面更新后失效 | 用语义化选择器,避免动态ID |
| 没有异常处理 | 一个错误导致全流程崩溃 | 每个关键操作都包Try-Catch |
| 速度太快被封 | 高频访问触发反爬 | 加随机等待 |
| 密码明文 | 安全隐患 | 用环境变量存储 |
| 没有日志 | 出问题不知道在哪里 | 每一步都记录日志 |
总结
恭喜你读完了这本零基础学习手册!你已经掌握了:
- ✅ RPA和影刀的基本概念
- ✅ 编辑器界面导航
- ✅ 变量、循环、条件、异常处理四大核心概念
- ✅ 元素捕获方法和失效应对策略
- ✅ 完整的电商价格监控实战项目
- ✅ 常见问题排查方法
下一步行动:
记住:RPA最好的学习方式是解决真实问题。找到你日常工作中最重复、最无聊的那个任务,用影刀自动化它。
作者:林焱 | 影刀RPA技术专栏 | 如果对你有帮助,欢迎点赞收藏!

