影刀RPA实操指南企业年报与工商公示信息批量采集每个月要对账、审供应商、做背调的时候最折磨人的就是打开国家企业信用信息公示系统一家一家搜企业名称等滑块验证码再翻年报找股东和资产数据。三十家企业查下来半天就没了抄进Excel还容易串行。这篇文章就把企业年报与工商公示信息批量采集这件事用影刀RPA拆成一条可以直接复用的流程。我也是非技术出身做采购和供应链相关的工作用影刀RPA快两年了。这条工商信息采集流程是我自己踩坑踩出来的从元素定位到验证码识别每一处坑都有对应的解法。你照着做一下午就能搭出自己的采集器。整个案例主线很明确从一张企业名单Excel出发机器人自动逐家打开公示系统搜索企业抓取登记状态、法定代表人、注册资本、股东信息再把最新一期年报里的关键数据一并写回表格。下面按模块展开每个环节都给到具体操作。从安装到第一次打开网页环境搭建五分钟搞定还没装影刀RPA的先去官网下载客户端安装完注册账号登录。社区版每天有30分钟运行时长练手和跑小批量够用要天天跑几百家的量就得考虑创业版或企业版。装完客户端第一件事是给浏览器装插件。点客户端左上角的工具找到浏览器插件管理给Chrome或Edge装上自动化插件。没装插件后面所有网页指令都会报无法连接到ChromeBridge进程。验证插件是否正常就打开一个空白流程拖一个打开网页指令在右侧指令详情面板把URL设为公示系统地址打开方式选新建标签页。能正常弹出页面环境就算通了。元素定位四合一公示系统上三种捕获姿势网页自动化的核心是元素定位影刀RPA里一共有四套工具可视化元素捕获、XPath、CSS选择器、正则表达式。我的使用比例大概是捕获占一半XPath占三成剩下的场景才用到CSS和正则。捕获元素是最常用的点击顶部工具栏的捕获元素按钮浏览器自动跳转鼠标移到目标上出现橙色边框后点击确认。但公示系统的页面很多输入框和按钮是动态渲染的纯捕获经常拿不稳这时候就要手动改XPath。# 捕获元素公示系统顶部搜索输入框 //input[idsearchText] # 模糊匹配查找按钮文本包含搜索的元素 //*[contains(text(),搜索) and contains(class,btn)] # 参照物定位通过法定代表人这个表头定位它右边一格的内容实际值 //*[contains(text(),法定代表人)]/following-sibling::*[1] # CSS选择器备选年报列表行比XPath更短页面改版抗性强 div[class*annual-report] tr选型口诀页面结构稳定用捕获class里带随机哈希用XPath属性匹配纯样式列表用CSS的contains语法从一堆文本里抠编号和日期就上正则。四个工具不是二选一同一条流程里混着用是常态。变量类型统一社会信用代码为什么会变成科学计数法影刀RPA的变量就四类数字、字符串、列表、字典。听着简单坑都在类型转换上。最典型的就是信用代码。18位统一社会信用代码如果按数字类型写入Excel会变成科学计数法而且末几位可能失真。解法是写入前先把变量转成字符串或者在写入指令的高级设置里把该列格式设置为文本的列。字典类型抓企业信息最顺手。把法定代表人、注册资本、登记状态作为键抓到的值作为值最后一次性写入表格代码可读性比一堆零散变量好得多。字典取值时键不存在会报错先用判断key是否存在分支兜底或者用get方式给个默认空值。列表和循环是天生一对。抓回来的股东列表、高管列表都是列表变量配合ForEach列表循环逐个处理这就是下一节的内容。相似元素循环与For次数循环年报列表的两种抓法抓股东列表、主要人员列表用的是获取相似元素列表指令捕获一行作为基准影刀自动找出所有结构相同的行返回一个列表。这里有个大坑官方文档专门写过如果网页在你操作过程中会刷新直接循环相似元素会报未找到指定ID的元素。公示系统查详情时页面经常刷新正确姿势是换成For次数循环在循环体里每次重新获取相似元素列表用循环下标去取第N项。# 影刀流程结构伪代码页面会刷新时的股东列表采集1.For次数循环次数获取相似元素列表(股东行)的长度2.循环体内 行列表获取相似元素列表(股东行 XPath)# 每次循环重新抓避免旧引用失效当前股东行列表[循环下标]# 用下标取项而不是直接循环元素股东名获取元素信息(当前股东,文本)出资比例获取元素信息(当前股东的子节点,文本)写入行数据到表格(Excel,股东名,出资比例)如果刷新后操作过的元素会从页面上消失比如点一个少一个官方给的方案是每次固定点第一项配合循环次数控制这个技巧在批量同意、批量下载场景里同样好用。滑块验证码与弹窗公示系统最刁钻的两道关卡公示系统的滑块验证码是所有采集者的第一道坎。影刀RPA内置验证码识别指令由影刀AI引擎提供服务类型里专门有缺口识别返回滑块需要拖动的横向距离拿这个距离配合模拟拖拽就能过。新账号会送一点识别额度量大的话增值服务按次计费缺口识别这类拖动滑块的成本很低。弹窗处理用自动处理弹框(web)指令这是官方为广告弹窗准备的防御性指令设定好弹窗关闭按钮的条件后续操作目标网页时如果弹窗出现会先自动关闭再执行原操作。它只对设置之后打开的网页生效所以这条指令要放在打开网页之前。处理弹窗的标准顺序我总结成五步先手动复现一次弹窗时机捕获关闭按钮配置自动处理弹框指令跑一遍确认最后在Try-Catch里加兜底关闭。公告弹窗、通知弹窗、登录提示全走这一套。Excel写入与数据清洗把年报数据落成表格数据处理环节开工前用打开Excel/新建Excel拿到工作簿对象第一行写表头企业名称、信用代码、登记状态、法定代表人、注册资本、成立日期、股东数、年报资产总额。抓到的文本往往带杂质注册资本是1000万人民币要拆成数字和币种日期格式有时是2024年6月30日要转2024-06-30。这种清洗我用Python指令做正则一行搞定比在Excel里嵌套函数清爽。# 输入网页抓取的注册资本文本如 1000万人民币 或 500万美元# 输出金额数字(万) 币种 两个变量写回Excel两列importre raw1000万人民币# 实际使用时替换为抓取到的变量mre.match(r([\d.])(万)?(.*),raw)amountfloat(m.group(1))# 数字部分1000unitm.group(2)or# 万字有无决定是否需要换算currencym.group(3)# 币种人民币 / 美元数据量大了之后我习惯每采集完一家就写入一行而不是攒到最后一次性写。中途报错重启已采的数据都在断点续采省一半时间。点击、输入与OCR登录环节的兜底方案公示系统大部分查询不需要登录但要做年报详情批量下载或企业异议等操作就得登录。登录页的图形验证码可以用验证码识别指令里的数字英文混合类型识别也可以截图后走OCR。有些老旧控件用元素指令点不动就上图像识别先用屏幕截图截下按钮图案再用图像等待出现加图像点击的组合。影刀的图像指令支持锚点九宫格定位加偏移量按钮位置会小幅度漂移的页面也能稳住。模拟模式和驱动模式的区别要记住驱动模式更底层不占用鼠标适合挂机跑模拟模式兼容性好适合调试阶段。键盘输入同理特殊输入框不生效时换虚拟键盘驱动。HTTP请求与Python协同不想开浏览器的时候对稳定性要求高的场景我会把部分采集改造成HTTP请求方式用HTTP请求指令直接调数据接口返回JSON后解析入库速度快且不怕页面改版。公示系统的部分数据接口有频率限制和鉴权抓包确认参数后要控制请求间隔。Python协同是影刀RPA的强项流程里插入Python指令第三方库随便装。日期计算、正则提取、JSON解析这些活儿交给Python主流程只负责调度和写表。写复杂逻辑时用def封装函数多个流程之间还能跨模块调用。两个平台的实战差异公示系统与第三方企业信息平台平台实战层面我常用两个数据源各有各的脾气。国家企业信用信息公示系统是权威源数据全免费代价是滑块验证码频繁、页面加载慢、高并发会被限流。策略是每家之间加2到3秒随机等待单日量控制在几百条以内稳字当头。第三方商业平台企查查、天眼查这类页面结构清晰、验证少但关键数据要登录加会员且列表页是懒加载。处理懒加载的套路是滚动到底触发加载用获取相似元素列表取行数行数不再增加就认为加载完了翻页则判断下一页按钮的class里是否带disabled不确定总页数时靠这个标记结束循环。对比项公示系统商业平台数据权威性官方源头二手整理验证码频率高低适用批量小批量慢采中大批量我的做法是公示系统做核验源、商业平台做采集源两边的法定代表人和注册资本对得上才落库对不上的人工复核。飞书通知与定时任务让采集器每天自动跑采集器做完只是半成品配上调度和通知才算自动化闭环。定时任务用常规任务计划把流程发布后在客户端的计划任务里新建设置每天早上7点执行支持Crontab表达式写更复杂的周期。企业用户还能用高级任务计划触发方式更丰富定时触发还能跳过法定节假日夜间跑批特别合适。通知走飞书群机器人在飞书群里添加自定义机器人拿到Webhook地址流程末尾用HTTP请求往这个地址POST一条JSON消息“今日已采集37家失败2家详见附件”。运行出错的兜底也有现成方案在应用的运行错误处理设置里直接配置飞书群通知的Webhook地址报错自动推群。邮件通知同理支持由影刀直接发送或配置自定义发件箱加授权码。我的习惯是飞书群看日常、邮件存底档双通道不丢数据。子流程与调试把采集器做成可复用的模板流程长了必须拆子流程我的编号命名法01_打开并搜索、02_过验证码、03_抓基础信息、04_抓年报、05_写表通知。主流程只剩一个目录树谁接手都能看懂。调试靠三件套断点加单步执行、变量面板实时看值、输出日志打印关键节点。遇到报错先打断点一行行排查别上来就改代码。每条指令的输出变量都命名规范比如str_credit_code、list_shareholders两周后回来看自己都认识。异常处理用Try-Catch-Finally包住单家企业的采集块Catch里记录失败企业名和报错信息到日志Finally里关闭详情页弹窗保证下一家从干净状态开始。这套结构让我的采集器能连跑几小时不卡死。易错速查表报错/现象常见原因解法未找到指定ID的元素循环中页面刷新旧元素失效改For次数循环每次重新取列表信用代码变科学计数法按数字类型写入转字符串或列格式设为文本无法连接ChromeBridge进程插件未装/浏览器被关装插件或用打开网页指令重开验证码过不去后死循环识别失败没有上限循环加最大重试次数加报警读取总行数与实际不符有格式的空单元格被计入清除格式或按文本内容过滤学习资源与延伸阅读官方文档和新手FAQ建议收藏报错先搜文档再自己猜很多坑官方都写了解法。新手FAQ里对浏览器配置、网页自动化报错、Excel报错的整理很全比如Failed to start native messaging host这类背景页报错的排查步骤都有。我把自己两年整理的流程模板、XPath片段库和这套年报采集器的完整源码放在了作者的代码仓库 home.linyan.cloud可以直接下载导入影刀RPA改企业名单就跑。遇到问题也欢迎交流采集中那些验证码和弹窗的邪门情况大概率我都遇到过。#影刀RPA #RPA自动化 #批量采集 #工商信息 #数据采集作者林焱