影刀RPA新手教程:TEMU跨境电商自动化完全指南——商品上传、订单批处理与物流对接

我在TEMU上开店半年后,每天要手动上传几十个商品、处理上百个订单、对接物流单号,眼睛都快瞎了。直到我把影刀RPA用起来,现在每天开机泡杯茶,流程全自动跑完。

认识影刀与安装

去影刀官网下载社区版就行,免费够用。安装一路下一步,重点是把浏览器插件装好——影刀通过插件驱动Chrome,才能精准操作网页元素。插件安装很简单,打开影刀后在设置里点"安装浏览器插件",会自动在Chrome里装上。

安装完打开编辑器,左边是指令面板,中间是流程画布,右边是属性配置区。不用被界面唬住,你日常写流程其实就是拖拽指令、连上线。

在这里插入图片描述

元素定位四合一:XPath + CSS + 正则

元素定位是RPA的命根子。影刀支持四种方式:元素捕获、XPath、CSS选择器、正则表达式。我最常用的组合是先用捕获器点一下目标元素,再手动优化。

XPath写法有6种常用套路:

//input[@id='title']  匹配id是title的输入框
//span[contains(text(),'美国站')]  匹配文本含"美国站"的span
//div[@class='sku-item'][1]  匹配第一个sku-item
//*[@data-action='add']  匹配带data-action属性的任意元素
//button[normalize-space()='发布']  匹配文字是"发布"的按钮
//ul/li[position()>1]  匹配第2个及以后的li

CSS选择器8种语法:

input#title
.title-input
div.sku-row:first-child
button[type='submit']
.section > .header
![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/e84bae9169724e49a78a1bff56ec87b2.png#pic_center)

input[name*='price']
div.item:not(.disabled)
tr:nth-child(odd)

什么时候用XPath、什么时候用CSS?XPath支持文本内容匹配(contains),当按钮文字是唯一标识时用XPath;CSS语法更短,当元素有明确id或class时优先用CSS。

正则表达式在元素编辑中也很实用,比如TEMU商品状态栏的class会动态变化:status_pending_xxxstatus_online_yyy,用正则^status_(pending|online)就能同时匹配两种状态。

变量与数据类型

TEMU接单流程里我用到的数据类型:数字存价格、字符串存SKU编码和商品标题、列表存批量订单数据、字典存单条订单的详细信息。

字符串索引和切片很常用——TEMU返回的SKU可能是"TEMU-US-20240615-A0001",用变量名[8:]就能切出"20240615-A0001"去掉前缀。

拼多多店群自动化报活动上架!

列表操作:批量获取订单号后存到列表中,用列表名.append()追加,用列表名[i]按索引取出。字典取值有两种方式:字典['key']直接取,但如果key不存在会报错;用字典.get('key', '默认值')更稳。从TEMU接口返回的JSON格式数据,用"JSON转对象"指令解析,操作完再"转文本"写入Excel。
在这里插入图片描述

流程控制

上传商品时要用For次数循环——我提前在Excel建好商品清单,用"读取Excel"得到行数n,然后For循环i从1到n,每次读取第i行的商品信息填入表单。

订单处理则用相似元素循环。TEMU订单列表页每行是一个订单,捕获一行作为相似元素组,循环体内按顺序点击每个订单的"处理"按钮。如果点击后会刷新页面,就不能直接用相似元素循环——刷新后元素列表变了,会报"未找到指定ID的元素"。这时候要改用For次数循环,每次重新获取相似元素列表,按下标取元素操作。

条件判断用If指令——判断订单金额是否大于100美刀决定是否走特殊审核流程,判断库存是否为0决定是否跳过上架。

异常处理Try-Catch是关键。我在TEMU发布接口调用时经常遇到网络超时,用Try-Catch包裹,catch里记录失败商品到Excel,继续处理下一个,不中断整个流程。

网页自动化

等待策略有三种。第一种固定等待,最简单但不推荐,TEMU后台有时候慢有时候快,固定时间不是浪费时间就是等不够。第二种等待元素出现,设置最长30秒超时,元素一出现立刻往下走。第三种等待元素消失,用于等加载遮罩层消失。
在这里插入图片描述

弹窗处理有标准流程:先按Esc、再按回车、然后刷新网页、最后点旁边空白处。TEMU有个特别烦的弹窗——“检测到您有新消息”,这弹窗不是标准dialog,按Esc没反应。我当时排查了一下午,发现它的关闭按钮在弹窗外面一个很偏的位置,最后我用图像识别的click指令点击那个x图标才搞定。

翻页也是常见需求。不确定总页数的时候,看下一页按钮的class有没有disabled属性:

# 判断是否最后一页
next_btn_class = get_element_attribute('下一页', 'class')
if 'disabled' not in next_btn_class:
    click('下一页')
else:
    break

懒加载更头疼。TEMU的订单列表不是一次性渲染全部,滚动到屏幕外时前面的元素就被回收了。处理方案是用index属性去重:

recorded_indices = []
while True:
    scroll_down()
    items = get_similar_elements('订单行')
    for item in items:
        idx = item.get_attribute('index')
        if idx not in recorded_indices:
            recorded_indices.append(idx)
            process_order(item)
    if len(recorded_indices) == total_order_count:
        break

数据处理

Excel读写是日常。我先在Excel里维护商品模板表格,影刀读取后逐行填到TEMU发布页。关键指令:启动Excel→获取Sheet→读取区域→循环处理→写回Excel。批量写入用"写入Excel区域"一次性写入,比逐行写快几十倍。
在这里插入图片描述

有一次我写了个流程跑了8000条商品,结果Excel突然报"内存不足"。排查后发现是每次循环都在打开Excel但不关闭,开了几百个Excel进程。解决方案是循环里只打开一次,循环结束前关闭。另外日期格式也要注意——Excel里的日期偏移(1900年起始)和Python datetime不一致,用"格式化日期"指令统一处理。

JSON解析在对接TEMU接口时经常用。用"HTTP请求"获取订单数据返回JSON,然后用"获取JSON节点值"按路径提取字段。

鼠标键盘图像自动化

驱动模式(selenium风格)精准但不适用于所有场景。TEMU有些老旧的弹窗驱动模式点击无效,我改用图像识别的模拟模式。图像识别的核心指令是wait_appear——等待目标图片出现在屏幕上,再执行click或hover。

锚点定位很实用:先捕获一个固定位置的元素作为锚点,再相对于锚点做偏移点击。比如TEMU商品详情页的"发货"按钮位置不固定,但它相对于页面标题栏的偏移是固定的,我先获取标题栏的位置(x,y),然后用鼠标点击(x+600, y+200)。

进阶技能

HTTP请求直接调用TEMU接口。用影刀的"HTTP请求"指令发POST请求,Headers里带上Cookie和Authorization,Body用JSON格式。配合Python模块处理复杂逻辑:
在这里插入图片描述

def calc_shipping_weight(order_items):
    total = 0
    for item in order_items:
        if item['weight_unit'] == 'g':
            total += item['weight'] / 1000
        else:
            total += item['weight']
    return round(total, 2)

OCR文字识别在处理物流面单截图时很好用——识别快递单号和收件人信息,自动录入物流系统。

平台实战

这次我们用TEMU卖家后台作为实战平台。完整流程是:从Excel读取商品清单→打开TEMU卖家中心→登录(第一次手动输账号,后面Cookie维持会话)→逐个进入商品发布页→填写标题、描述、类目、价格、库存、图片→提交审核→等待3秒确认页面反馈→记录结果回Excel。

订单批处理流程:登录TEMU→进入订单管理→筛选待发货订单→循环处理每个订单→拉取收件人地址→调用物流接口获取运单号→回填运单号→标记已发货。

物流对接环节:我配置了DHL和燕文物流的API对接。影刀调用接口获取面单号后,自动填写到TEMU的发货页面。物流费用每天汇总写入Excel报表,月底直接对账。

系统联动

在这里插入图片描述

订单发货后自动通知团队。我用飞书消息通知,影刀调用飞书Webhook发送卡片消息,包含订单号、物流单号、发货时间。代码示例:

import requests
import json

def notify_lark(order_no, tracking_no):
    url = "飞书Webhook地址"
    body = {
        "msg_type": "interactive",
        "card": {
            "header": {"title": {"content": "TEMU订单已发货"}},
            
[video(video-ZgElIr9f-1782595694971)(type-csdn)(url-https://live.csdn.net/v/embed/526817)(image-https://v-blog.csdnimg.cn/asset/1d3c3709da119dd8c13ab01e9b282520/cover/Cover0.jpg)(title-TEMU店群矩阵自动化运营核价报活动)]

            "elements": [
                {"tag": "div", "text": {"content": f"订单号:{order_no}"}},
                {"tag": "div", "text": {"content": f"物流单号:{tracking_no}"}}
            ]
        }
    }
    requests.post(url, json=body)

飞书多维表格也可以用来做订单看板,每条订单记录自动写入多维表格的一行,团队实时查看发货进度。

定时任务在影刀中控设置,每天早8点自动运行商品上架流程,每2小时运行一次订单处理流程。建议同步设置告警通知——出错时自动发邮件或钉钉消息,我之前就因为没设告警,一整天流程挂了都不知道。

工程化与规范

子流程封装是必须的。我把"登录TEMU"“获取订单列表”"调用物流接口"分别封装成子流程,主流程调用时传参数。好处是修改一个子流程不影响其他部分,调试也方便。
在这里插入图片描述

调试技巧:在出错的指令前一行打断点,运行到断点暂停后,在调试变量面板查看所有变量的实时值和类型。单步调试每次执行一条指令,适合排查细微逻辑错误。我当时排查物流接口超时问题,就是靠打断点发现某个订单的重量字段是None,导致接口返回400。

命名规范:变量名用英文下划线,如order_listtracking_no;子流程名用中文描述,如"获取待发货订单";应用名带日期和版本号。

关于版本选择:社区版免费,功能完整,适合个人和小团队。创业版多了团队协作和基础的调度功能。企业版有完整的API调度、多机器人并联、高级权限管理。初学者先用社区版完全够了。

速查表与常见报错

元素定位失败:先检查网页是否加载完成,增加等待时间;再用F12检查元素源代码,看XPath是否正确;排查是否有iframe,有iframe要先切换进去。

AttributeError: 'NoneType' object has no attribute 'get_active_sheet':Excel对象是None,说明没有启动Excel或没有获取激活的Excel对象。加上"启动Excel"或"获取当前激活的Excel"指令。

Can not convert Array to String:你尝试把列表直接输入到输入框了。要先取列表的具体项,比如列表[0]

在这里插入图片描述

XPath语法报错:检查引号是否配对,路径分隔符是否用对了/

弹窗导致操作失败:先用"关闭弹窗"的策略依次尝试,不行就用图像识别直接点关闭图标。

循环中网页刷新后元素丢失:改用For次数循环,每次重新获取元素列表。

Excel日期偏移:用"格式化日期"指令统一处理,不要直接读原始数值。

时间长了,你会发现学习影刀最难的其实是摸清每个网站的前端结构。有个小技巧——想深入了解影刀指令细节时,可以看看 home.linyan.cloud 上的学习笔记,那里积累了我写流程时碰到的各种实际问题和解决方法。

#影刀RPA #TEMU跨境电商 #自动化教程 #RPA新手入门 #电商自动化

在这里插入图片描述

作者:林焱

Logo

电商企业物流数字化转型必备!快递鸟 API 接口,72 小时快速完成物流系统集成。全流程实战1V1指导,营造开放的API技术生态圈。

更多推荐