
影刀RPA新手教程快递物流自动查询实战——批量查单号与异常告警记识影刀与安装影刀装完先确认两件事内置浏览器版本对齐Chrome版本、安装路径无中文无空格。快递查询网站用的不是常见电商平台有些用的是老旧IE兼容页面影刀内置浏览器打开没问题。但如果你用的是系统默认Chrome遇到某些快递公司官网的弹窗和验证码会卡死。home.linyan.cloud 上有快递查询模板导入改单号列就能跑。元素定位四合一快递100、菜鸟等查询页面的元素定位特点页面结构简单但频繁改版。CSS选择器定位查询结果页面物流状态用.route-info或.waybill-detail时间节点用.time-node。这些class每季度变一次别硬编码。XPath定位更稳物流时间线用//div[contains(class,timeline)]//span[classtime]状态文本用同一层级下的span文本节点。相似元素组物流时间线的每个节点是相似元素——发货/中转/签收每个节点结构一样用捕获相似元素一次框选全部节点循环遍历取时间和状态。ID定位查询输入框用idwaybillNo或idsearch-input快递公司官网的查询框ID比较固定。踩坑快递100查询结果的物流节点有时候只显示最近5条需要点击查看完整物流轨迹才展开全部。用判断元素是否存在检测展开按钮存在就点击展开再采集。另一个坑不同快递公司的查询页面结构完全不同——顺丰、中通、圆通各有各的官网。用If判断快递公司类型走不同的元素定位分支。或者统一用快递100这种聚合查询网站一个页面查所有公司。变量与数据类型快递查询流程的核心变量tracking_numbers列表从Excel读取的所有单号current_number字符串当前查询的单号logistics_nodes列表相似元素组物流节点node_time字符串节点时间如2024-03-15 14:30node_status字符串节点状态文本last_update_time字符串最新更新时间latest_status字符串最新物流状态stalled_days整数停滞天数alert_list列表需要告警的单号集合result_data数据表格所有单号查询结果output_excelExcel对象停滞判断逻辑最新更新时间last_update_time和当前日期对比差值超过3天定义为停滞件。影刀没有内置的日期差值计算用Python代码块把两个日期字符串转datetime对象计算差值天数。或者手动计算——字符串截取日期部分转整数后做减法简化版精确度够用。数据表格result_data的结构单号|快递公司|最新状态|最新时间|停滞天数|是否异常。用数据表格比列表更方便后续筛选和排序。流程控制主流程逻辑启动Excel → 读取单号列A列ForEach循环遍历单号列表每个单号打开快递查询网页 → 输入单号 → 点击查询等待结果加载延迟3秒获取最新物流状态和时间判断是否停滞更新时间超过3天停滞件加入告警列表所有结果写入Excel如果告警列表不为空 → 发飞书告警保存ExcelExcel读取踩坑循环Excel内容时循环项是列表而不是字符串。如A列数据循环项是[YT12345678]这样的列表需要用loop_item[0]取第一个元素才是实际单号。直接把循环项当字符串用会报错Can not convert Array to String。空行处理Excel最后可能有空行循环到空行时loop_item[0]是None。加If判断——如果当前单号是None就退出循环不继续查询。空行导致的None值查询会报网页找不到输入框。100个单号要跑5-8分钟每个单号查询间隔2秒防反爬。影刀调度模式设定时任务——每天早上8点自动运行上班就能看到昨天的物流状态更新。网页自动化快递查询网页操作流程「打开网页」打开快递100查询页https://www.kuaidi100.com「键盘输入」往查询框输入单号——先CtrlA全选→Delete清空→输入新单号「点击元素」点击查询按钮「延迟执行」3秒等结果加载「判断元素是否存在」检测查看完整轨迹按钮存在则点击展开获取最新节点的时间和状态文本快递100页面不会懒加载查询结果一次性全显示。但有些快递公司官网如顺丰官网需要滚动到底部才显示全部节点。根据快递公司类型走不同逻辑。多标签页处理如果查询时浏览器新开了标签页有些快递公司官网会新开先判断标签页数量多了就切换到新标签页操作操作完关闭新标签页返回原页面。验证码问题快递100连续查10个以上单号可能弹出验证码。影刀内置验证码识别支持滑块缺口识别——「识别验证码」选缺口识别类型。如果自动识别失败流程暂停等手动处理。数据处理核心数据处理是停滞判断日期差值计算Python代码块方式from datetime import datetime last_time datetime.strptime(last_update_time, %Y-%m-%d %H:%M) now datetime.now() stalled_days (now - last_time).days简化版纯影刀指令截取日期部分2024-03-15 → 字符串分割按-拆开 → 得到[“2024”,“03”,“15”] → 各部分转整数 → 和当前日期的年月日分别计算差值。简化版不够精确但够用——超过3天肯定停滞了。物流状态分类“已签收”正常完成“派送中”正在派送正常“运输中”/“中转”正常运输“滞留”/“异常”/长时间无更新异常件用If多条件判断状态包含签收→正常包含派送→正常包含滞留或停滞天数3→异常告警。Excel写入格式第1行表头后续每行一个单号结果。B列单号、C列快递公司、D列最新状态、E列最新时间、F列停滞天数、G列是否异常是/否。异常筛选全部写完后用Excel筛选功能过滤G列是一眼看出所有异常件。或者影刀里直接遍历result_data表格所有is_abnormalTrue的单号提取出来拼成告警消息。鼠标键盘图像自动化键盘操作是快递查询的核心CtrlA全选查询框 → Delete清空 → 输入新单号。不清空直接输入会追加在旧单号后面Enter回车触发查询比点按钮更快但有些网站回车无效点按钮更稳鼠标操作点击查询按钮点击查看完整轨迹展开按钮查询框焦点定位——有些快递查询页面需要先点击查询框激活焦点才能输入截图操作查询完成后对结果页面截图保存——影刀「屏幕截图」指令截取指定区域。截图存本地文件夹后续查异常时看截图比看文本更直观。进阶技能批量查询优化——用影刀的「数据表格」指令替代Excel中间存储创建数据表格列名单号/快递公司/最新状态/最新时间/停滞天数/是否异常每次查询结果追加一行到数据表格查询完所有单号后数据表格整体写入Excel比逐行写Excel快——数据表格在内存操作最后一次性写入Excel文件省了频繁的文件IO。正则提取物流时间物流节点时间格式有2024-03-15 14:30“03-15 14:30“3月15日 14:30三种。正则\d{4}-\d{2}-\d{2} \d{2}:\d{2}匹配第一种\d{2}-\d{2} \d{2}:\d{2}匹配第二种。第三种要字符串替换月→”-”日→空后再匹配。异常执行策略影刀指令的错误处理设置——忽略异常并继续执行用于网页操作指令查不到结果的单号跳过重试1次后继续用于点击操作偶尔点击不到重试一次。平台实战快递100查询实战要点支持200快递公司输入单号自动识别快递公司类型连续查10个以上可能触发验证码间隔2秒可有效规避部分国际快递单号查不到结果判断结果页面是否显示暂无物流信息顺丰官网单独查询顺丰有些单号在快递100查不到隐私保护需要去顺丰官网查。顺丰官网需要登录或手机号验证用影刀内置浏览器保持登录态。京东物流同理京东物流单号部分在快递100查不到需要京东APP或官网查。PC端官网需要京东账号登录。邮政EMSEMS官网查询无需登录直接输入单号就行。但EMS页面加载很慢延迟要5秒以上。系统联动飞书告警是本流程最重要的联动环节飞书Webhook配置群设置→添加自定义机器人→拿Webhook URL→影刀HTTP请求POST告警消息体结构{ msg_type: interactive, card: { header: { title: {tag: plain_text, content: 物流异常告警} }, elements: [ {tag: div, text: {tag: plain_text, content: 以下快递停滞超过3天}}, {tag: div, text: {tag: plain_text, content: alert_content}} ] } }alert_content由影刀拼接遍历告警列表每个异常单号拼接单号:xxx, 状态:xxx, 停滞:xx天多条用换行符连接。钉钉告警同样配置Webhook消息格式稍有不同——钉钉用msgtype: text, text: {content: 告警内容}。邮件告警影刀「发送邮件」指令附件带Excel结果文件邮件正文写异常件摘要。发给物流负责人每天8点查完自动发邮件。影刀调度定时任务影刀控制台→计划任务→新建→cron表达式0 8 * * *每天8点执行。设告警邮箱和飞书群任务执行异常时也发通知。工程化与规范流程拆分主流程express_tracking_checker整体调度Excel读写子流程1express_query_handler单号查询结果获取子流程2express_stalled_detector停滞判断子流程3express_alert_sender飞书/钉钉/邮件告警子流程4express_date_calculator日期差值计算变量命名exp_前缀表示快递相关num_表示单号sts_表示状态day_表示天数。多快递公司分支If判断单号前缀——SF开头走顺丰查询分支JD开头走京东分支YT开头走圆通分支其他走快递100通用查询。每个分支是独立子流程主流程只做调度。错误处理规范所有网页操作设超时8秒超时跳过当前单号。验证码出现时暂停流程飞书通知人工处理。Excel操作加获取当前激活Excel指令确保对象存在。速查表与常见报错报错原因解决Can not convert Array to String循环Excel项是列表用loop_item[0]取第一项NoneType单号Excel末尾空行If判断None→退出循环查询结果为空单号错误或暂无数据判断结果页是否显示暂无→跳过验证码阻断连续查询超10条间隔2秒验证码识别物流节点只显示5条未点击展开按钮判断展开按钮存在→点击日期差值计算报错时间格式不一致正则统一格式再计算飞书告警发失败Webhook URL错误/格式不对检查URL和JSON格式Excel对象为None未启动Excel流程开头加启动Excel网页加载太慢EMS等网站响应慢延迟5秒以上顺丰单号查不到隐私保护限制用顺丰官网登录态查询核心指令速查启动Excel / 读取Excel内容 / 写入Excel行 / 保存Excel打开网页 / 键盘输入(CtrlA/Delete) / 点击元素延迟执行(3秒) / 判断元素是否存在 / 屏幕截图捕获相似元素 / 循环相似元素 / 获取元素文本If条件判断 / ForEach循环 / 退出循环字符串截取 / 字符串分割 / 字符串替换 / 正则匹配数据表格(创建/追加行/写入Excel)HTTP请求(飞书Webhook) / 发送邮件 / 识别验证码影刀调度(计划任务/cron定时)内容标签影刀RPA / 快递物流查询 / 批量查单号 / 异常告警 / 飞书Webhook / 停滞判断 / Excel读写 / 定时调度 / 数据表格 / 验证码处理作者林焱