影刀RPA进阶教程:抖音/TikTok Shop商品采集无限滚动与防限流实战

抖音和TikTok Shop的商品列表,是无限滚动加载的。

你往下滚,它才加载新数据。不滚动,永远只看到前20个。更麻烦的是,class名带随机哈希,今天写的XPath明天就失效。

我用影刀RPA做TikTok Shop采集时,光滚动加载就调了一整天。

picture.image

下面把无限滚动的处理方式和防限流策略一次讲清楚。

抖音/TikTok无限滚动加载的触发机制

picture.image 场景:打开TikTok Shop商品页,只显示20个商品,往下滚才加载更多。

方法:用“滚动页面”指令触发加载,配合“等待元素出现”确认新数据。

操作步骤:

  1. 在右侧指令面板搜索“滚动页面”,拖入流程

picture.image 2. 滚动方式选“滚动到页面底部”

  1. 加“等待元素出现”,捕获商品列表最后一个商品
  2. 设置超时10秒,元素出现说明新数据加载完成
# 捕获元素:TikTok Shop商品列表最后一项
//div[contains(@class,'product-list')]//div[contains(@class,'item')][last()]

![picture.image](https://p6-volc-community-sign.byteimg.com/tos-cn-i-tlddhu82om/ee906570780046298aa0ebe14c7c83ab~tplv-tlddhu82om-image.image?=&rk3s=8031ce6d&x-expires=1791901533&x-signature=6non6znC07gQaAObVDRKuIytc2Y%3D)

# 等待这个元素出现,说明滚动加载完成
# 影刀RPA的“等待元素出现”指令,超时10秒

注意:TikTok Shop滚动后不会立刻加载,通常有1~2秒延迟。加“等待时间”2秒更稳。

picture.image

循环滚动与防死循环的循环条件设置

场景:不确定要滚多少次才能加载完所有商品。

方法:用“循环条件”指令,判断“加载更多”按钮或底部提示是否存在。

picture.image 操作步骤:

  • 拖入“循环条件”指令,条件设为“判断元素是否存在”
  • 捕获“加载更多”按钮或“没有更多”提示
  • 循环体内先滚动,再等待,再判断
  • 设置最大循环次数50次,防止死循环
# 捕获元素:TikTok Shop“加载更多”按钮
//*[contains(text(),'加载更多') or contains(text(),'Load more')]

# 捕获元素:TikTok Shop“没有更多”提示
//*[contains(text(),'没有更多') or contains(text(),'No more')]

# 循环条件:判断“加载更多”是否存在
# 如果存在,继续滚动;如果不存在,退出循环

重点:TikTok Shop有时会显示“没有更多”,有时直接不显示任何提示。用“加载更多”是否存在来判断更准。

动态class哈希的XPath模糊匹配技巧

场景:TikTok Shop的class名带随机哈希,比如item-abc123,每次刷新都变。

方法:用contains()函数匹配固定前缀或后缀。

picture.image

# 捕获元素:TikTok Shop商品标题(class带随机哈希)
//*[contains(@class,'product-title')]

# 捕获元素:商品价格(class含price)
//*[contains(@class,'price')]

# 捕获元素:商品链接(通过href包含/product/定位)
//a[contains(@href,'/product/')]

# 用“获取相似元素列表”指令,一次性拿到所有商品标题
# 输出变量:title_list,再循环遍历写入表格

避坑:不要用绝对路径。TikTok Shop的DOM结构经常变,用属性模糊匹配最稳。

防限流策略:等待时间与代理轮换

场景:连续滚动几十次后,TikTok Shop弹出验证或直接加载失败。

方法:控制滚动频率,配合代理IP轮换。

  • 每次滚动后加“等待时间”3~5秒
  • 每采集50个商品,切换一次代理IP
  • 翻页用“循环条件”判断“加载更多”按钮
  • 设置最大页数50页,防止死循环
策略设置作用
滚动间隔3~5秒避免请求过快
代理轮换每50条避免IP被限
最大滚动50次防止死循环
异常重试3次网络波动容错
# 捕获元素:TikTok Shop商品列表项(用于采集)
//div[contains(@class,'product-list')]//div[contains(@class,'item')]

# 每次滚动后,用“获取相似元素列表”重新抓取
# 注意去重:用商品ID判断是否已采集
//div[contains(@class,'item')]//a[contains(@href,'/product/')]/@href

实测:TikTok Shop比抖音国内版更敏感,建议滚动间隔不低于3秒。

数据去重与写入Excel的完整流程

场景:滚动加载时,有时会重复加载同一批商品。

方法:用商品链接或商品ID去重,再写入Excel。

操作步骤:

  1. 用“获取相似元素列表”拿到所有商品链接
  2. 循环遍历,用“判断元素是否存在”检查是否已采集
  3. 已采集的跳过,未采集的写入表格
  4. 用“写入行数据到表格”追加数据
  5. 循环结束后“保存Excel”
# 影刀Python指令:按商品链接去重
import pandas as pd

df = pd.read_excel('TikTok商品数据.xlsx')
df = df.drop_duplicates(subset=['商品链接'], keep='first')
df.to_excel('TikTok商品数据_去重后.xlsx', index=False)

注意:社区版30分钟/天,滚动采集容易超时。建议用创业版跑完整流程。

常见问题速查

问题原因解决
滚动后不加载页面未到底部用“滚动到页面底部”
元素定位失败class哈希变了用contains模糊匹配
采集到重复数据滚动位置没变按商品链接去重
弹出验证码请求太频繁加等待+代理轮换
社区版额度不够30分钟/天创业版无限制

Q:魔法指令能生成TikTok采集流程吗?

A:影刀3.0的魔法指令可以生成框架,但无限滚动和去重要手动调。

Q:TikTok和抖音国内版的采集有什么区别?

A:TikTok Shop的登录态和网络环境更复杂,建议单独配置浏览器Profile和代理。

推荐资源

  • 影刀RPA官方学院“跨境电商自动化”专题课,免费
  • 影刀社区搜索“TikTok采集”,有现成模板可下载
  • Chrome插件XPath Helper,实时验证TikTok的XPath

#影刀RPA #RPA自动化 #TikTokShop #抖音采集 #无限滚动 #防限流

作者:林焱

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

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