# 影刀RPA新手教程:TEMU商品数据

影刀RPA新手教程:TEMU商品数据自动化采集流程

picture.image TEMU(拼多多跨境)后台的商品数据、竞品监控,每天要手工复制粘贴。
解决方法:用影刀模拟人工操作,自动采集商品列表、销量、价格等信息。
本文给出TEMU采集的完整流程,适配TEMU卖家中心前台搜索页和后台管理页。


一、TEMU采集的两种场景

场景数据来源是否需要登录难度
前台搜索页temu.com搜索关键词不需要简单
后台商品管理seller.temu.com 商品列表需要登录中等

本文以前台搜索页为例(公开数据,无反爬压力)。
后台采集类似,只是元素定位不同,加登录步骤即可。


二、捕获TEMU搜索页的关键元素

打开TEMU官网(https://www.temu.com),搜索任意词,F12查看结构。

需要捕获的元素(TEMU特有)

元素名用途XPath参考
input_search搜索输入框//input[@placeholder='Search']//input[@type='search']
btn_search搜索按钮//button[@type='submit'] 或含 search 的按钮
div_product_card商品卡片容器//div[contains(@class,'product-card')]//div[@data-testid='product-card']
txt_title商品标题{当前卡片}//a[contains(@class,'title')]
txt_price当前价格{当前卡片}//span[contains(@class,'price')]
txt_original_price原价(划线价){当前卡片}//span[contains(@class,'original')]
txt_sales销量(已售){当前卡片}//span[contains(@class,'sold')]
txt_rating评分{当前卡片}//div[contains(@class,'rating')]
link_detail商品链接{当前卡片}//a[@href]
btn_next下一页//a[@aria-label='Next']//span[text()='Next']

💡 TEMU的class名通常带随机后缀,用 contains() 匹配固定前缀。
比如 product-card 实际可能是 product-card__3f2a,用 contains(@class,'product-card') 即可。

捕获技巧

  • 商品卡片用“捕获元素”选中商品区域的最外层div。
  • 子元素用右键父元素 → “捕获子元素”生成相对路径。

三、完整流程设计

A_Main(主流程)
  ├─ 1. 打开Excel(创建或读取)
  ├─ 2. 打开TEMU搜索页
  ├─ 3. 输入关键词并搜索
  ├─ 4. 等待商品列表加载
  ├─ 5. 调用 C_01_CollectOnePage(采集当前页)
  ├─ 6. 条件循环(下一页存在)
  │      ├─ 点击下一页
  │      ├─ 等待新列表加载
  │      └─ 调用 C_01_CollectOnePage
  └─ 7. 关闭Excel

C_01_CollectOnePage
  ├─ 1. 获取相似元素列表 div_product_card → list_cards
  ├─ 2. 循环相似元素列表(当前卡片变量 card)
  │      ├─ 提取标题、价格、原价、销量、评分、链接
  │      ├─ 数据清洗(去除$符号,销量转数字)
  │      ├─ 组装行数据列表
  │      └─ 追加行到Excel
  └─ 3. 返回

四、分步指令详解

步骤1:打开TEMU并搜索

# 1. 打开TEMU首页
#    打开网页:https://www.temu.com
#    等待元素出现:input_search(超时5秒)

# 2. 输入关键词(假设全局变量 keyword = "phone case")
#    输入文本:目标元素 input_search,内容 {keyword},清空原有内容

# 3. 点击搜索按钮
#    鼠标点击:btn_search

# 4. 等待列表加载
#    等待元素出现:div_product_card(超时8秒)

步骤2:采集一页数据

# 获取相似元素列表
#    目标元素:div_product_card
#    输出列表:product_cards

# 循环相似元素列表
#    列表:product_cards
#    当前元素变量:card

# 循环体内:
#    1. 获取元素文本(标题)
#       元素路径:{card}//a[contains(@class,'title')] → 输出 title
#       注意:标题可能有换行,用“获取元素文本”会自动处理

#    2. 获取元素文本(价格)
#       元素路径:{card}//span[contains(@class,'price')] → 输出 price_raw
#       清洗:去除 $ 和逗号,转float,例如 "$9.99" → 9.99

#    3. 获取元素文本(原价,可选)
#       元素路径:{card}//span[contains(@class,'original')] → 输出 original_raw
#       可能为空,空则留空

#    4. 获取元素文本(销量)
#       元素路径:{card}//span[contains(@class,'sold')] → 输出 sales_raw
#       例如 "1.2K sold" 或 "500 sold",提取数字并转换 K=千

#    5. 获取元素文本(评分)
#       元素路径:{card}//div[contains(@class,'rating')] → 输出 rating_raw
#       例如 "4.5 ★" 提取数字4.5

#    6. 获取元素属性(链接)
#       元素:{card}//a[@href]
#       属性名:href → 输出 link
#       注意:TEMU链接可能是相对路径,前面补 https://www.temu.com

#    7. 组装一行数据:[title, price_clean, original_clean, sales_num, rating_num, link]
#    8. 追加行到Excel(Excel对象已在主流程打开)

步骤3:翻页

# 条件循环(当下一页按钮存在时继续)
#    循环条件:判断元素是否存在(btn_next) == True
#    注意:TEMU最后一页下一页按钮可能消失或变灰

#    循环体内:
#       1. 鼠标点击 btn_next(模拟点击)
#       2. 固定等待 1 秒
#       3. 等待元素出现 div_product_card(超时8秒)
#       4. 调用子流程 C_01_CollectOnePage

# 条件循环结束

五、数据清洗Python代码(处理TEMU格式)

TEMU的价格和销量有特殊格式,用Python清洗。

import re

# 清洗价格(去除 $ 和逗号)
price_raw = get_var("price_raw")  # 如 "$9.99" 或 "$12.99 - $15.99"
if '-' in price_raw:
    # 取最低价
    price_raw = price_raw.split('-')[0].strip()
price_clean = re.sub(r'[^\d\.]', '', price_raw)  # 去除非数字和小数点
price_num = float(price_clean) if price_clean else 0

# 清洗销量(如 "1.2K sold" 或 "500 sold")
sales_raw = get_var("sales_raw")
match = re.search(r'([\d\.]+)(K|M)?', sales_raw)
if match:
    num = float(match.group(1))
    if match.group(2) == 'K':
        sales_num = int(num * 1000)
    elif match.group(2) == 'M':
        sales_num = int(num * 1000000)
    else:
        sales_num = int(num)
else:
    sales_num = 0

# 清洗评分(如 "4.5 ★")
rating_raw = get_var("rating_raw")
rating_match = re.search(r'(\d+\.?\d*)', rating_raw)
rating_num = float(rating_match.group(1)) if rating_match else 0

set_var("price_num", price_num)
set_var("sales_num", sales_num)
set_var("rating_num", rating_num)

六、TEMU专属避坑指南

坑1:商品卡片懒加载

TEMU滚动到底部才加载更多商品,但分页模式下每页固定数量,不需要滚动。
如果采不到所有卡片,检查是否用了“移动端视图”,建议用PC端网页。

坑2:价格有区间

部分商品显示 $9.99 - $15.99,采集时取最低价或最高价。
上面代码已处理取最低价。

坑3:反爬与验证码

TEMU对频繁访问有限制,建议:

  • 每次翻页后固定等待1~2秒
  • 单次运行不超过10页
  • 采集间隔设置随机(如2~3秒)

坑4:登录态要求

采集前台公开数据不需要登录。
如果要采集后台数据(如自己店铺的商品),需要在流程开始时登录TEMU卖家中心。

坑5:下一页按钮定位

TEMU的下一页按钮可能是 Next 文字或右箭头图标。
捕获时用 //span[text()='Next']//a[@aria-label='Next']


七、完整Excel输出示例

商品标题价格原价销量评分商品链接
iPhone 15 Case9.9919.9923004.5https://...
Magnetic Phone Ring5.9912.99108004.7https://...

表头建议
在流程开始前手动创建Excel,写入表头。
或用影刀“写入行”在首次运行时写入。


八、影刀专属操作清单

操作精确指令说明
打开TEMU打开网页URL用 https://www.temu.com
输入搜索词输入文本模式选模拟输入
等待列表等待元素出现超时8秒
获取卡片列表获取相似元素列表目标元素为商品卡片
相对定位{当前卡片}//子路径循环内用
点击下一页鼠标点击加固定等待1秒
追加行追加行Excel对象
数据清洗Python代码用正则处理

版本差异:社区版采集TEMU时注意控制页数(建议≤10页),防止触发反爬。
创业版可搭配代理IP轮换。


常见问题速查

问题原因解决方法
搜索后无结果关键词无结果或页面未加载加等待时间,检查元素路径
卡片列表只采到几个页面未滚动完全滚动到底部再获取,或改用分页URL
价格为0正则匹配失败查看price_raw原始值,调整正则
销量显示0销量格式变化(如“1.2k”小写k)正则加上大小写 [Kk]
翻页停不下来下一页按钮最后一页依然存在加判断:按钮是否包含disabled
评分提取为空评分在子元素里改用 {card}//div[contains(@class,'rating')]//span[1]

推荐资源

  • TEMU前台:https://www.temu.com (直接访问)
  • 影刀模板市场:搜索“TEMU商品采集”,有社区分享的模板
  • XPath Helper:校验TEMU的元素定位

最后一句:TEMU采集比淘宝简单(反爬没那么严),但要注意价格区间的处理。
把清洗逻辑写在Python代码里,一次写好后续复用。这套流程跑通后,每天竞品监控效率提升10倍。


作者:林焱

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

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