影刀RPA新手教程:微信自动化实战——企业微信消息发送与群通知
企业微信消息自动化是落地最快的场景之一。我每天把价格监控结果丢进群里,异常时直接@负责人,不用人守着流程跑。
这篇文章以一个完整案例串起来:淘宝商品价格采集 → 写入Excel → 成功时发群通知 → 异常时@运营主管。全文围绕企业微信群机器人,顺手把飞书机器人、钉钉机器人的差异也对比清楚。
一、认识影刀与安装:先把枪擦亮
影刀社区版直接去官网下载安装包,按提示下一步就行。创业版和企业版才能用控制台调度,但社区版写本地流程完全够用。
浏览器插件必须装。Chrome用户进扩展程序 → 打开开发者模式 → 拖入影刀插件。我第一次做企业微信通知时,插件没装好,捕获不到网页元素,排查了一下午才发现是这个问题。
装完打开影刀,界面就三块:左侧指令库、中间画布、右侧属性面板。拖拽式开发,不需要写代码,但懂点Python能走得更远。
二、元素定位四合一:采集淘宝价格的前置技能
采集淘宝商品价格,核心靠元素定位。影刀提供四种定位方式:元素捕获、XPath、CSS选择器、正则表达式。我一般用元素捕获占70%,XPath占25%,正则兜底5%。
淘宝商品标题、价格、销量的真实XPath大概长这样:
//div[contains(@class,'item')]//a[contains(@class,'title')] //div[contains(@class,'price')]//span[contains(@class,'price-int')] //div[contains(@class,'deal-cnt')]CSS选择器写法更短,适合结构稳定的页面:
div.item a.title div.price span.price-int div.deal-cnt选型建议:页面结构简单用CSS选择器;有动态id或重复结构用XPath;文本中提取手机号、订单号用正则。淘宝商品列表用XPath最稳,因为class名经常微调。
三、变量与数据类型:把价格装进变量
采集到的商品名是字符串,价格是字符串但可能要转数字,销量是带"人付款"的文本,先清洗再存。
# 字符串拼接:生成群通知正文msg_text=f"今日采集完成,共{count}条,平均价格{avg_price}元"# 列表存全部商品product_list=["iPhone 15","华为 Mate 60","小米 14"]# 字典存单条商品product={"name":title,"price":price,"sales":sales}# JSON转文本后塞HTTP请求体importjson payload=json.dumps({"msgtype":"text","text":{"content":msg_text}})影刀变量面板里直接拖【设置变量】指令就行。字符串注意空值,字典注意键不存在会报错,用.get()或者提前判断。
四、流程控制:成功发通知,异常@人
整个流程用Try-Catch包起来。外层Try放采集+写入Excel,Catch里发异常通知并@负责人。
try:采集淘宝价格()写入Excel()发送成功通知()exceptExceptionase:发送异常通知(mention_list=["ZhangSan"])写入错误日志(str(e))If判断放在Catch内部:如果异常次数小于3次,就重试;超过3次才发告警。这里用While循环配合计数器最清晰。
五、网页自动化:采集淘宝价格的标准动作
打开网页用【打开网页】指令,建议勾选"加载完再执行"。淘宝反爬强,第一次打开可能弹登录窗,用【等待元素】指令等10秒,等不到就发告警。
翻页用XPath判断下一页按钮是否disabled:
//a[contains(@class,'next')]/@class如果class包含"disabled"就停循环,否则点击下一页。不确定总页数时这是最稳的做法,比硬循环100次更省时间。
懒加载要滚动到底部再采集。用【模拟鼠标滚轮】或者JS滚动:
window.scrollTo(0,document.body.scrollHeight);采集完一轮用列表去重,避免同一商品重复写入Excel。
六、数据处理:Excel写入与清洗
价格采集回来是"¥1,299.00"这种字符串,要清洗成数字。用正则去掉"¥"和逗号,再转成float:
importre price=float(re.sub(r'[¥,]','',price_str))Excel写入用【启动Excel】→【写入区域】,把列表数据一次性写进去,比单格循环快得多。如果要追加,先读最后一行,再写入下一行。
销量"1.2万人付款"要统一单位:
if"万"insales_str:sales=float(sales_str.replace("万","").replace("人付款",""))*10000else:sales=float(sales_str.replace("人付款",""))七、鼠标键盘图像自动化:网页搞不定时用图像
淘宝登录有时弹滑动验证码,XPath定位不到滑块。这时用图像识别:先截一张滑块小图,再用【图像识别】→【点击】找到位置。
图像识别在影刀里属于兜底方案。能元素定位就别用图像,因为分辨率一变位置就偏。桌面ERP软件才主要用图像,网页里90%的元素定位足够。
八、进阶技能:HTTP请求直接操控Webhook
企业微信群通知指令虽然能用,但不够灵活。想要@指定人和发Markdown卡片,我直接用HTTP请求。
企业微信群机器人配置路径:企业微信群聊 → 右键群设置 → 添加群机器人 → 复制Webhook地址。地址格式:
https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=xxxxxxxxxxxxxxxx保存这个key到变量,后面所有请求都用它。
纯文本消息POST格式:
importrequestsimportjson url="https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=your_key"headers={"Content-Type":"application/json"}payload={"msgtype":"text","text":{"content":"价格监控完成,共采集 127 条","mentioned_list":["ZhangSan"]}}res=requests.post(url,headers=headers,data=json.dumps(payload,ensure_ascii=False))@指定人员用userid,不是昵称。在企业微信管理后台 → 通讯录 → 成员详情里能看到。我第一次写的时候填了名字,结果@不出去,排查半天才发现要填userid。
Markdown消息适合发格式化日报:
payload={"msgtype":"markdown","markdown":{"content":"""**今日价格监控日报** > 采集商品数:127 > 均价:¥1,299 > 异常商品:3 """}}文本和Markdown怎么选?一句话:纯文本最常用,Markdown适合日报/告警,卡片消息适合带链接的推送。
九、平台实战:企业微信、飞书、钉钉三选一
企业微信群通知指令最省事,但只能发文本/文件/图片/Markdown,@人要传userid。飞书机器人用ou_xxx的user_id,格式是<at user_id="ou_xxx">名字</at>,富文本和消息卡片更强大。钉钉机器人需要加签,消息格式只支持文本和Markdown,@人用手机号。
配置复杂度:钉钉 > 飞书 > 企业微信。企业微信拿到Webhook地址就能发,最友好。
我实际项目里,通知通道按客户来:客户用企业微信就用企微,用飞书就用飞书。影刀里分别拖对应的群通知指令,或者统一用HTTP请求自己拼。
十、系统联动:定时任务与多平台通知
流程写好之后,用影刀客户端触发器或控制台定时任务。我每天早9点自动跑价格监控,跑完发企微群,失败时同时发企业微信和邮件。
邮件通知用【发送邮件】指令,填SMTP服务器、授权码。授权码不是邮箱密码,是QQ邮箱或163邮箱里单独生成的。
如果想多平台同时通知,封装一个"发送通知"子流程,接收消息内容、@人列表、平台类型三个参数。主流程只调用一次,子流程内部判断走哪个平台。
十一、工程化与规范:把流程做稳
webhook地址不要硬编码在流程里,放配置文件或变量里。上线前把流程拆成三个子流程:采集、处理、通知。每个子流程有明确的输入输出。
命名规范:变量用小写加下划线,如webhook_url;子流程用动词开头,如send_wecom_notification。调试时多打断点,异常时先写日志再发通知,避免通知失败把异常吞了。
十二、速查表:常见报错与解决
企业微信机器人返回错误码:
- 40008:文本长度超过2048字节,分条发或换Markdown。
- 40001:key无效,检查Webhook地址是否复制完整。
- 43004:需要接收人,@人时userid填错。
- 发送成功但群里看不到:检查机器人是否被禁言,或群设置了仅管理员可发言。
- 中文乱码:HTTP请求加
ensure_ascii=False。
飞书机器人常见:
- 9499:消息被频控,加1秒延时。
- app_id/app_secret错误:图片类型才需要,文本类型不需要。
钉钉机器人常见:
- 310000:签名错误,检查密钥和加签算法。
- 关键词不匹配:安全设置里必须包含关键词。
再补一条真实踩坑:企业微信机器人群通知,如果群名改了,Webhook地址不变,还能继续用。但机器人被移出群聊后,地址不会失效,只是发不进去,错误码不明显,容易误判流程正常。
home.linyan.cloud 是影刀RPA学习主页,里面整理了更多实战案例和配置细节。
#影刀RPA #RPA教程 #企业微信自动化 #群机器人 #消息通知
作者:林焱