影刀RPA实操指南:招聘网站简历下载与人才库归档

发布时间:2026/9/29 14:37:33
影刀RPA实操指南:招聘网站简历下载与人才库归档 影刀RPA实操指南招聘网站简历下载与人才库归档HR朋友找我吐槽的场景你肯定眼熟每天几十份简历散落在浏览器下载文件夹文件名五花八门想找某个候选人要翻半天人才库台账还是手工复制粘贴维护的。我给她搭了一个影刀RPA流程简历自动下载、按岗位自动归档、台账自动更新全链路无人值守。这篇把这套流程完整拆开讲。招聘网站的具体页面结构各不相同我不贴某个网站的具体选择器但整套循环列表—下载附件—重命名归档—写台账的骨架和方法论是通用的换任何招聘平台都成立。安装准备客户端、插件和账号登录态装影刀RPA客户端首次启动装浏览器插件Chrome或Edge这是网页指令能跑的前提。招聘网站大多需要登录才能看到简历列表和下载按钮所以流程第一步的工程问题是登录态保持。我的做法是用影刀RPA自带的浏览器环境保存Cookie流程开始时先判断元素是否存在检查页面右上角的头像元素存在说明登录态有效直接干活不存在就停下来输出日志提醒人工登录绝不把账号密码写进流程里自动登录招聘平台的验证码和风控会教你做人。列表定位XPath抓简历行与候选人信息简历列表页的操作对象是每一行简历。自动捕获通常能抓到第一行但列表是相似元素组要用获取相似元素列表(web)一次性拿到所有行再用循环相似元素(web)逐行处理。这里有个经典报错把相似元素组直接丢给点击元素(web)会报错因为元素组像一捆铅笔必须循环里一根根拿出来用官方FAQ的原话就是铅笔比喻我当时在这卡了一小时。手动写XPath定位列表行比自动捕获更抗改版# 捕获元素简历列表中所有行容器假设行class含resume-item //*[contains(class,resume-item)] # 捕获元素每行里的候选人姓名行内第一个强调文本 //*[contains(class,resume-item)]//*[contains(class,name)] # 捕获元素每行里的下载简历按钮按文本匹配不受class改版影响 //*[contains(text(),下载简历)] # 参照物定位通过姓名找到同一行内的下载按钮兄弟层级回溯 //*[contains(class,name)]/ancestor::*[contains(class,resume-item)]//*[contains(text(),下载)]XPath和CSS怎么选还是老规则class规整用CSS快按文本和层级回溯用XPath稳。招聘网站前端改版频繁用文本匹配contains(text(),‘下载’)做定位锚点比绑定class存活率高得多这是我改版最少翻车的写法。循环与翻页不确定总页数的处理流程控制骨架最外层是翻页循环内层ForEach或循环相似元素处理当前页每一行。招聘网站一般不显示总页数翻页判断我用下一页按钮的disabled状态循环内先获取下一页按钮的class属性文本里包含disabled就break退出循环否则点它翻下一页。这套逻辑也是官方FAQ推荐给不确定总页数场景的标准解法。每一行内的处理顺序是获取元素文本内容抓姓名和岗位 → 判断元素是否存在检查附件或下载简历入口 → 有就点下载没有就在台账记无附件跳过。判断一定要做有些候选人只留了站内联系方式没传附件直接点下载会报错中断整个批次。下载落盘下载文件指令的三个必踩坑下载环节用下载文件指令或处理下载对话框指令里选择触发下载的元素指定保存文件夹指令会等文件下载完成并返回文件路径变量。官方FAQ里专门有篇下载问题排查我按踩坑频率排个序浏览器开着下载前询问每个文件的保存位置指令等不到对话框报等待对话框出现超时去浏览器下载设置关掉这个开关装完插件第一次跑就先查这个自定义扩展名不完整简历多为pdf或docx扩展名必须写全写了个p出来的文件打不开报等待下载完成超时网络慢或文件大把指令里的超时时间从默认值调大或者在下载指令前加等待元素出现确保按钮就绪下载完成后指令保存的文件路径变量要立刻接到下一步重命名用千万别重新拼路径猜文件在哪。归档规则重命名与按岗位分文件夹下载下来的原始文件名基本不可用我的归档规则是岗位_姓名_日期.pdf岗位从列表页抓的文本里提取日期用当天日期。流程结构创建文件夹指令按岗位建子目录父目录不存在会自动创建官方指令说明里写明了这点然后移动文件到对应目录。重命名要处理特殊字符候选人姓名里可能有空格、生僻字甚至带引号的英文名我统一在重命名前清洗只保留中文、字母、数字其余替换成下划线。文件名还有个隐蔽坑是重名同一天同岗位可能下到同名文件移动前先判断目标文件是否存在存在就在文件名尾部追加下载时间戳。台账更新Excel读写与去重人才库台账一张Excel列结构日期、岗位、姓名、工作年限、附件路径、处理状态。用读取区域把整个台账读成列表循环处理简历时把每条记录追加进列表最后写入区域一次性写回比逐行写快一个数量级。去重逻辑我放一个Python块# 输入exist_list是台账里已有的姓名岗位集合new_name/new_post是当前候选人# 输出is_dup标记是否重复keyf{new_name}_{new_post}ifkeyinexist_list:# 集合查找判断姓名岗位组合是否已存在is_dupTrue# 重复跳过下载只更新台账的日期字段else:is_dupFalseexist_list.add(key)# 新人加入集合防止本批次内部重复用集合而不是列表做查重几百条数据时性能差异就出来了。工作年限这类文本里的数字如5年经验提取5用正则或文本切片处理别让带文字的字符串直接进Excel数字列。多平台适配两套招聘站的差异点这套流程我在两类平台跑过。第一类是BOSS直聘式的聊天流平台简历附件藏在聊天详情页入口深流程要多一层点开对话→等待元素出现详情区→判断附件存在→下载第二类是前程无忧式的列表流平台列表页直接有简历预览和下载按钮结构简单但每页条数多重点在翻页和去重。两套平台共用同一套子流程只换定位表达式和页面流转参数。顺带一提这套列表循环附件下载归档的骨架我还在电商场景复用过淘宝/天猫店铺的商品详情图批量归档、拼多多商家后台的结算单下载逻辑完全同构。骨架复用是RPA工程化的核心收益一次搭好多处套壳。系统联动飞书日报与定时任务流程收尾接飞书群通知今日新增简历N份其中技术岗N份重复N份无附件N份。HR在群里每天早上9点看到日报人才库永远是昨天的最新状态。定时任务在客户端计划里配置我设的工作日上午8点半跑赶在HR上班前完成。夜间无人值守有三个前提机器不锁屏不休眠、浏览器登录态有效前面说的Cookie方案、整个流程套Try-Catch——Catch块里输出日志加截图再接一条飞书告警挂了立刻有人知道。工程化拆分三个子流程与命名规范流程拆成三个子流程01_登录检查与翻页遍历、02_单份简历下载归档参数传入行元素返回归档路径、03_台账更新与通知。主流程只剩调度。子流程间用输入输出参数传数据命名带编号前缀注释写在每个子流程开头两行。调试方法整批跑挂时别重跑全流程在02子流程里右键加断点单步执行变量面板盯着文件路径变量的值变化路径类问题十秒定位。版本管理上每次给HR改完归档规则旧版本文件夹留存再改招聘流程改坏了影响的是真实候选人数据回滚能力必须有。易错速查简历下载流程8个高频坑现象原因处理点击元素(web)报错把相似元素组当单个元素用循环相似元素里逐个操作等待下载对话框超时浏览器开了下载前询问关闭该浏览器开关下载文件打不开扩展名不完整写全pdf/docx翻页死循环未判断disabled获取class含disabled就退出部分行报错中断无附件仍点下载先判断元素是否存在附件台账出现重复记录无查重逻辑集合查重姓名岗位归档文件名乱码未清洗特殊字符重命名前过滤非法字符夜跑静默失败无异常通知Catch接日志截图加飞书再补三条网页侧高频项简历详情在新标签页打开时要用获取已打开的网页对象重新拿对象否则指令里旧对象必然报找不到元素列表懒加载的站点滚动一屏后用获取相似元素列表比对数量数量没变就是到底了iframe嵌套的附件区先切进iframe再捕获元素。延伸阅读与模板资源官方文档里下载文件“处理下载对话框”获取相似元素列表三篇指令文档建议精读下载排查FAQ收藏备用。这套流程的完整模板含翻页判断、查重Python块、归档规则我整理在作者的代码仓库 home.linyan.cloud台账表头和归档命名规则也一并附上替换定位表达式就能跑自己的平台。#影刀RPA #RPA自动化 #简历下载 #文件归档 #Excel台账作者林焱