影刀RPA新手教程:TEMU商品批量上架与数据采集流程

做TEMU半托管或全托管,经常需要从其他平台采集商品数据,或者批量上架商品到店铺后台。 TEMU后台是典型的跨境电商管理系统,有分页列表、多语言切换、批量操作等功能。

picture.image 核心流程:登录TEMU卖家中心 → 采集在售商品数据 → 或批量上架商品(Excel导入/逐个添加)→ 异常处理。

一、整体流程结构

picture.image

子流程功能
A_Main主流程调度
B01_Login登录TEMU卖家中心
C01_CollectProductList采集商品列表(分页)

picture.image | C02_BatchUpload | 批量上架商品(读Excel→填表单) | | D01_ExportResult | 导出操作结果 |

社区版提醒: TEMU后台加载较慢,建议等待时间设长一些(5-8秒),避免元素找不到。


二、步骤1:登录TEMU卖家中心

TEMU卖家中心地址通常为 https://seller.temu.comhttps://seller.temu.com/login。 登录需要邮箱/手机号+验证码,或者扫码。

picture.image

picture.image

# B01_Login 子流程


![picture.image](https://p3-volc-community-sign.byteimg.com/tos-cn-i-tlddhu82om/bf7cdf58da64414d968acb8bc1825d3b~tplv-tlddhu82om-image.image?=&rk3s=8031ce6d&x-expires=1781941741&x-signature=RCM0DIEzaVMxwmC6egAQ0oAXQ7o%3D)
打开网页:"https://seller.temu.com/login",打开方式=新建标签页

# 判断是否已登录(检查“店铺名称”或“订单”菜单)
判断元素是否存在://div[contains(@class,'shop-name')] → 存入“已登录”


![picture.image](https://p3-volc-community-sign.byteimg.com/tos-cn-i-tlddhu82om/fa0e3efb11a04e6cb048fb0b8de7a02b~tplv-tlddhu82om-image.image?=&rk3s=8031ce6d&x-expires=1781941741&x-signature=gO83GeheFs6ZxILJnXOmH2FjIdg%3D)
如果 已登录 == False
    # 点击“邮箱登录”或“手机号登录”(根据页面)
    点击元素://div[contains(text(),'邮箱登录')]
    
    # 输入账号密码
    输入文本://input[@placeholder='邮箱/手机号'],内容={账号}
    输入文本://input[@type='password'],内容={密码}
    
    # 点击登录按钮
    点击元素://button[contains(text(),'登录')]
    
    # 等待可能的二次验证(短信/邮箱验证码)
    等待元素出现://input[@placeholder='验证码'],超时3秒
    输出日志:"请输入验证码,等待30秒"
    固定等待:30秒
    点击元素://button[contains(text(),'确认')]

# 等待后台首页加载完成
等待元素出现://div[contains(@class,'dashboard')] 或 //span[contains(text(),'商品管理')],超时10秒
输出日志:"登录成功"

注意: TEMU登录可能有滑块验证,需要人工介入或使用第三方打码。建议首次登录时手动过验证,保持cookie。


picture.image

三、场景A:采集在售商品列表

进入“商品管理”→“在售商品”,通常是分页表格。

picture.image

操作步骤

  1. 进入商品列表页
  2. 获取当前页表格行
  3. 循环每行提取:商品ID、名称、价格、库存、状态
  4. 翻页到最后一页
# C01_CollectProductList 子流程

# 导航到商品列表
点击元素://span[contains(text(),'商品管理')]
点击元素://a[contains(text(),'在售商品')]
等待元素出现://table[@class='goods-table'] 或 //div[contains(@class,'goods-list')],超时8秒

设置变量:全部商品 = []
设置变量:当前页 = 1
设置变量:还有下一页 = True

循环条件:还有下一页 == True
    # 获取当前页表格行(通常每行是一个商品)
    获取相似元素列表://table/tbody/tr → 存入“行列表”
    
    # 循环处理每一行
    循环列表:行列表,循环变量=当前行
        Try
            # 在当前行下查找各字段
            在当前元素下查找元素:.//td[1]//span[@class='goods-id'] → 获取文本 → 商品ID
            在当前元素下查找元素:.//td[2]//a[@class='goods-name'] → 获取文本 → 商品名
            在当前元素下查找元素:.//td[3]//span[@class='price'] → 获取文本 → 价格
            在当前元素下查找元素:.//td[4]//span[@class='stock'] → 获取文本 → 库存
            在当前元素下查找元素:.//td[5]//span[@class='status'] → 获取文本 → 状态
            
            全部商品.append([商品ID, 商品名, 价格, 库存, 状态])
        Catch
            输出日志:"提取单行失败,跳过"
    
    # 翻页判断
    判断元素是否存在://a[contains(text(),'下一页') and not(contains(@class,'disabled'))] → 存入“可翻页”
    如果 可翻页 == True
        点击元素://a[contains(text(),'下一页')]
        等待元素出现://table/tbody/tr,超时8秒
        
![picture.image](https://p3-volc-community-sign.byteimg.com/tos-cn-i-tlddhu82om/13f0ae11d97948d99756a07d28567c8d~tplv-tlddhu82om-image.image?=&rk3s=8031ce6d&x-expires=1781941741&x-signature=zx%2BMWiLJ%2FWgM1yTOaYmNPqSxMGs%3D)
        当前页 = 当前页 + 1
        输出日志:"进入第{当前页}页"
    否则
        还有下一页 = False

输出日志:"共采集{全部商品的长度}条商品"
设置输出参数:商品列表 = 全部商品

TEMU表格列数可能变化,用“捕获元素”定位实际列。


四、场景B:批量上架商品

从Excel读取商品数据(标题、价格、库存、图片链接等),逐个添加到TEMU后台。

流程拆分

  1. 读取Excel商品数据
  2. 点击“添加商品”按钮
  3. 填写商品表单(多步骤:基本信息、规格、图片、运费)
  4. 提交并记录结果
# C02_BatchUpload 子流程

# 1. 读取Excel数据
Excel Workbook打开:文件"C:\temu_upload.xlsx" → 工作簿
读取区域数据到列表:起始"A2",结束"F" → 存入“商品数据列表”
Excel Workbook关闭

输出日志:"共{商品数据列表的长度}条待上架商品"

# 2. 循环上架
设置变量:成功数 = 0
设置变量:失败数 = 0
设置变量:失败记录 = []

循环列表:商品数据列表,循环变量=一行
    # 一行数据示例:[商品名, 价格, 库存, 分类, 主图链接, 描述]
    Try
        # 点击“添加商品”
        点击元素://button[contains(text(),'添加商品')]
        等待元素出现://div[@class='goods-form'],超时5# 填写基本信息
        输入文本://input[@name='goods_name'],内容={一行[0]},清空
        输入文本://input[@name='price'],内容={一行[1]},清空
        输入文本://input[@name='stock'],内容={一行[2]},清空
        
        # 选择分类(可能是下拉框)
        点击元素://div[@class='category-select']
        等待元素出现://li[contains(text(),{一行[3]})] → 点击
        
        # 上传图片(需要文件路径,提前准备图片)
        # 注意:TEMU图片上传可能需要用“模拟输入”填入本地路径
        # 或者用“上传文件”指令
        上传文件://input[@type='file'],文件路径="{一行[4]}"
        等待元素消失://div[contains(text(),'上传中')],超时30# 点击提交
        点击元素://button[contains(text(),'提交')]
        等待元素出现://div[contains(text(),'提交成功')],超时10秒
        
        成功数 = 成功数 + 1
        输出日志:"上架成功:{一行[0]}"
        
        # 可选:关闭成功提示
        点击元素://button[contains(text(),'关闭')]
        
    Catch
        失败数 = 失败数 + 1
        失败记录.append([一行[0], 异常信息])
        输出日志:"上架失败:{一行[0]},原因:{异常信息}"
        
        # 尝试关闭可能弹窗
        判断元素是否存在://button[contains(text(),'取消')]
        如果存在,点击取消
        
    Finally
        # 每个商品后休息2-3秒,避免风控
        固定等待:随机(2,3)

# 输出结果
输出日志:"批量上架完成:成功{成功数},失败{失败数}"
设置输出参数:失败记录列表 = 失败记录

五、EXCEL上架模板示例

A(商品名)B(价格)C(库存)D(分类)E(主图路径)F(描述)
女士T恤19.99100女装D:\images\t1.jpg纯棉透气
男士短裤29.9950男装D:\images\t2.jpg夏季新款

注意: 图片路径必须是本地绝对路径,且图片格式、大小符合TEMU要求(通常≤2MB,jpg/png)。


六、关键XPath参考

# TEMU卖家中心常见元素(仅供参考,实际需捕获)

# 登录页
邮箱输入框://input[@type='email' or @name='email']
密码框://input[@type='password']
登录按钮://button[contains(text(),'登录')]

# 商品管理菜单
商品管理://span[contains(text(),'商品')]
在售商品://a[contains(@href,'goods/list')]

# 商品列表页
表格行://table/tbody/tr
商品ID:.//td[1]/span
商品名链接:.//td[2]/a

# 添加商品页
商品名输入框://input[@id='goods_name'] 或 //input[@name='goodsName']
价格输入框://input[@name='price']
库存输入框://input[@name='stock']
分类选择器://div[@class='category-picker']
提交按钮://button[contains(text(),'保存') or contains(text(),'提交')]

七、易错速查表

错误现象原因解决方法
登录后跳转不到商品管理页面加载慢或权限不足加等待元素出现,超时10秒
采集表格行时取到表头相似元素列表包含了表头用XPath排除thead,例如//tbody/tr
上架时分类选不中下拉框需要逐级展开模拟点击展开后,等待选项出现再选
图片上传失败文件路径不对或格式不符检查文件是否存在,用os.path.exists验证
提交后提示“请填写xxx”必填项没填完整加检查逻辑,确保每个输入框都填了
TEMU弹出滑块验证操作频率太高每个商品后固定等待3-5秒

八、销量/价格数据清洗(TEMU常见格式)

TEMU上采集到的价格可能是$19.99,销量可能是1.2k。用Python清洗。

# 清洗价格:去掉$符号,转float
价格文本 = "$19.99"
价格数字 = float(价格文本.replace('$', ''))

# 清洗销量:1.2k → 1200
def parse_k(text):
    if 'k' in text.lower():
        return int(float(text.lower().replace('k', '')) * 1000)
    return int(text)

output_销量 = parse_k("1.2k")

九、完整主流程示例

# A_Main
输出日志:"=== TEMU自动化开始 ==="

# 登录
调用子流程:B01_Login

# 选择操作类型(通过参数或手动选择)
设置变量:操作模式 = "采集"  # 或 "上架"

如果 操作模式 == "采集"
    调用子流程:C01_CollectProductList
        输出参数存入:商品数据
    调用子流程:D01_ExportResult
        输入参数:数据={商品数据},类型="采集"
否则
    调用子流程:C02_BatchUpload
        输出参数存入:失败列表
    调用子流程:D01_ExportResult
        输入参数:数据={失败列表},类型="上架"

输出日志:"=== 流程结束 ==="

十、推荐资源

  • 影刀官方帮助中心:搜索“TEMU”可找到商家实战案例
  • TEMU卖家中心API文档(如果有权限):用API上架比RPA更稳定
  • 我的经验:TEMU后台经常改版,每两周要检查一次XPath是否失效,建议关键元素用contains(@class, '固定部分')模糊匹配

作者:林焱

本文为《影刀RPA学习手册》系列文章之一,内容源于实操经验的整理与分享。

0
0
0
0
评论
未登录
暂无评论