工厂的MES网页每天下班前都要翻一遍,手动抄数据填Excel,抄完都过了饭点。
6个车间,每个车间200多条工单。你要做的是:打开浏览器 → 输入网址 → 登录MES → 点进生产日报 → 选中数据区域 → 复制 → 打开Excel → 粘贴 → 保存 → 再切到下一个车间。
一个车间10分钟,6个车间就是1小时。每天1小时,一个月20小时,相当于两天半的工作日全花在复制粘贴上。
更离谱的是,MES网页的表格不能导出,不能下载,不能API对接。你能做的只有肉眼盯着屏幕,手在键盘上重复。
后来我直接用影刀RPA搭了一个MES数据采集机器人,每天早上8点自动执行,6个车间数据8分钟抓完,写入Excel直接发邮箱。
今天把搭建过程拆成6步,你跟着做,今天下午就能跑起来。

简单来说,就是代替你每天登录MES、翻网页、抄数据。
流程跑通后,每天早上8点自动执行:
全程不需要你动手,不需要会Python,不需要找IT对接API。
开始前,先确认MES系统的可访问性:
http://192.168.1.100/mes(内网地址)MES生产日报.xlsx,提前建好表头Excel表头建议:

打开影刀RPA,新建空白流程。
从左侧"网页"组件库,拖入"打开网页"组件:
http://192.168.1.100/mes(替换成你的MES地址)拖入后,在组件后加一个"等待"组件,设置3秒,确保登录页完全加载。
登录页通常有账号框、密码框、登录按钮。影刀可以自动识别元素。
拖入"输入文本"组件:
你的账号再拖一个"输入文本",定位密码框,输入密码。
再拖一个"点击元素",定位"登录"按钮。
加等待5秒,等登录完成进入系统首页。
安全提醒:账号密码直接写在流程里不安全。建议:
登录后,页面通常是系统首页或仪表盘。你需要找到生产日报的入口。
拖入"点击元素",定位左侧菜单中的"生产日报"或"日报查询"。
加等待3秒,等页面加载。
如果MES系统有弹窗提示(如"今日数据已更新"),加一个"判断元素存在"组件:如果弹窗出现,点击关闭按钮,再继续。
这是核心步骤。MES的生产日报通常是一个HTML表格,结构比较固定。
先观察表格结构:打开Chrome开发者工具(F12),找到表格的class或id。通常是 <table class="data-table"> 或者 <table id="productionDaily">。
影刀有两种抓取方式:
方式A:按行抓取(推荐)
拖入"获取相似元素列表"组件:
tr 元素行列表然后拖入"ForEach项"循环:
行列表当前行循环内部,拖入"获取子元素文本"组件,依次提取每个单元格:
当前行.td:nth-child(1)当前行.td:nth-child(2)当前行.td:nth-child(3) → 用"转换为数字"组件处理当前行.td:nth-child(4) → 同样转数字当前行.td:nth-child(5) → 用"字符串替换"去掉"%",再转数字当前行.td:nth-child(6)当前行.td:nth-child(7) → 加"判断非空",空的话写"无异常"把提取的7个字段组装成一个数据行,写入Excel。
方式B:按表格整体抓取
如果MES表格结构特别规范,也可以直接用"获取表格数据"组件,一次性抓取整个表格,输出为数据表对象,再按行写入Excel。这种方式更简单,但如果表格有合并单元格或复杂样式,可能解析出错。
一个车间可能有多页数据。在流程中加入"判断元素存在":
下一页按钮 存在车间切换逻辑:
拖入"点击元素",定位顶部车间下拉菜单(如 select#workshop)。
拖入"选择下拉选项"组件:
["A车间","B车间","C车间","D车间","E车间","F车间"]每次切换车间后,加3秒等待,等页面刷新,然后回到第4步重新抓取。
如果MES的车间是左侧树形菜单而非下拉框,用"ForEach项"循环点击每个车间节点。
数据抓取完成后,写入Excel。
拖入"打开Excel工作簿":
D:\日报数据\MES生产日报.xlsx日报簿每个车间对应一个Sheet。拖入"写入数据表"组件:
日报簿车间A(循环变量)A2当前车间数据保存并关闭工作簿。
最后加一个"发送邮件"组件,把日报附件发给生产主管(SMTP设置同前一篇)。

问题1:元素定位失败,提示"未找到元素"
原因:MES网页结构变化,或者表格是动态加载的(JavaScript渲染)。
解法:
问题2:登录后页面跳转慢,流程卡在登录页
解法:在点击登录后,用"等待元素出现"判断"生产日报"菜单是否出现,出现后再继续,而不是固定等几秒。
问题3:良品率抓取后变成"99.5"而不是0.995
解法:加一个"字符串替换"组件,把"%"替换为空,再用"除以100"组件转成小数,再写入Excel。
问题4:异常记录字段为空时,Excel写入报错
解法:用"判断非空"组件,空的话赋默认值"无异常",再写入。
1. 增量采集而非全量
每天全量抓取200条太慢。MES通常支持按日期筛选。在流程开头加"输入文本",在日期筛选框填入当天日期,只抓当天的数据。
2. 数据校验
写入Excel前,加一个"判断":如果良品率 > 100% 或 < 0%,标记为异常数据,单独存到"异常数据"Sheet,方便人工复核。
3. 多车间并行
影刀RPA支持多流程并行。如果6个车间独立采集,可以拆成6个子流程同时跑,总时间从8分钟降到2分钟。
4. 异常预警
在流程中加入判断:如果某个车间的良品率低于90%,或者异常记录中出现"停机",自动发送微信/钉钉告警。
这个系列三篇文章各有侧重:
| 文章 | 场景 | 数据源 | 核心难点 |
|---|---|---|---|
| 电商竞品采集 | 公开网页 | 电商平台商品列表 | 翻页循环 + 反爬 |
| Excel自动汇总 | 本地文件 | 多个Excel文件 | 数据清洗 + 公式写入 |
| MES生产日报 | 内网系统 | MES网页表格 | 元素定位 + 动态加载 |
影刀RPA做MES数据采集的核心逻辑是:打开网页 → 登录系统 → 定位表格 → 按行提取 → 翻页/切换 → 写入Excel → 邮件推送。
和Excel汇总那篇相比,这篇多了一个网页交互层:登录、导航、元素定位、等待渲染。这也是大多数企业内网系统的共性——有网页就能抓,不需要API接口。
搭建一次,每天省1小时。一个月省20小时。省下来的时间,用来做良品率分析、异常趋势预警、产能预测——这才是MES数据真正的价值。
让机器人做重复的事,你去做思考的事。