影刀RPA深度教程:电商采集实战淘宝+拼多多+反爬策略
影刀RPA深度教程:电商采集实战(淘宝+拼多多+反爬策略)
电商数据采集是影刀最经典的场景。这篇讲淘宝和拼多多的实战采集,附带反爬应对方案。
先装好环境
www.yingdao.com 下载,社区版免费。装完去Chrome装影刀插件。
第一部分:淘宝搜索结果采集(完整案例)
需求

输入关键词"手机壳",采集前5页的:商品标题、价格、销量、店铺名、商品链接。
完整流程骨架
1. 启动浏览器(Chrome)
2. 拼接URL:https://s.taobao.com/search?q=手机壳
3. 跳转网址
4. 等待商品列表加载完成(等待元素出现://div[@class='items'])
5. 设置变量:page_count = 1
6. While 条件:page_count <= 5
a. 获取相似元素:商品列表的每个商品块
b. ForEach循环每个商品块
- 获取标题(子元素://a[@class='item-title'])
- 获取价格(子元素://span[contains(@class,'price')])
- 获取销量(子元素://span[contains(@class,'sale')])
- 获取店铺名(子元素://a[contains(@class,'shop')])
- 获取链接(获取href属性)
- 写入Excel一行
c. 点击"下一页"按钮
d. 等待页面刷新(等待元素出现:下一页按钮的高亮状态)
e. page_count = page_count + 1
7. 保存Excel,关闭浏览器
关键XPath(淘宝)
商品标题:
//a[contains(@class,'item-title')]
价格(有多种class,用contains):
//span[contains(@class,'price')]
销量:
//span[contains(text(),'人付款')] ← 文字包含"人付款"
店铺名:
//a[contains(@class,'shop-name')]
下一页按钮:
//a[contains(@class,'next') and not(@disabled)]
判断下一页是否disabled(最后一页):
//a[contains(@class,'next')][@disabled]
[video(video-pofYftaZ-1783094833720)(type-csdn)(url-https://live.csdn.net/v/embed/525010)(image-https://v-blog.csdnimg.cn/asset/f4faa587144cb7070f19e8b36813806b/cover/Cover0.jpg)(title-店群矩阵自动化突破运营极限!)]
如果找到这个元素,说明已经是最后一页,退出循环。
坑点1:淘宝动态渲染,元素加载慢
解决: 不要用固定等待,用"等待元素出现":
等待元素出现://div[@class='items']
超时:15秒
如果15秒还没加载出来,说明可能触发了验证码。
坑点2:登录验证
淘宝搜索不需要登录,但如果频繁访问,会弹出滑块验证码。
应对策略:
- 每次请求后随机等待2-5秒(用Python生成随机数)
- 用"图像识别-点击"指令处理滑块(简单滑块可以过)
- 高频采集建议用代理IP
第二部分:拼多多搜索结果采集
拼多多的特殊性
拼多多的页面是动态渲染的(类似React),元素定位和淘宝不同,而且反爬更严格。

关键XPath(拼多多)
拼多多的class名是动态生成的(如cls-12345),不能用class定位。
用其他属性定位:
//div[@data-testid='beast-core-generic-card']
拼多多有些元素有data-testid属性,这个比较稳定。
按文字内容定位商品价格:
//span[contains(text(),'¥')]
取商品链接(拼多多的链接在data-href属性里,不是href):
指令:获取元素属性
属性名:data-href

保存到变量:goods_url
拼接完整URL:"https://mobile.yangkeduo.com/" + goods_url
翻页处理(拼多多是滚动加载,不是翻页按钮)
拼多多搜索结果是滚动到底部自动加载更多,不是点击"下一页"。
处理思路:
设置变量:previous_count = 0
设置变量:current_count = 获取当前商品数量()
While 条件:current_count > previous_count 且 page_count < 5
→ 滚动到页面底部
→ 等待2秒(等内容加载)
→ previous_count = current_count
→ current_count = 重新获取商品数量()
→ page_count = page_count + 1
如果 current_count == previous_count(两次数量一样,说明没有更多内容了)
→ 退出循环
滚动到底部的指令:
指令:执行JavaScript
代码:window.scrollTo(0, document.body.scrollHeight);
第三部分:反爬策略完全攻略
策略1:随机等待时间

固定等待太规律,容易被识别。用随机等待:
指令:Python代码
代码:
def main(args):
import random
wait_time = random.uniform(2, 5) # 2到5秒之间的随机数
import time
time.sleep(wait_time)
return {'wait_time': wait_time}
策略2:模拟真人操作
真人在浏览页面时,会:
- 滚动页面(不是瞬间跳到底部)
- 鼠标移动(不是直接点击)
- 有时会在页面停留很久
模拟滚动(逐步滚动,不是一下子滚到底):
指令:Python代码
代码:
def main(args):
import time
for i in range(10): # 分10次滚动
js = "window.scrollBy(0, 300)" # 每次滚动300px
# 需要在网页对象上执行JS,这里简化
time.sleep(0.2)
return {}
策略3:更换User-Agent
有些网站通过User-Agent识别爬虫。

指令:设置User-Agent(在启动浏览器之前)
User-Agent字符串:
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36
策略4:使用代理IP
高频采集时,同一个IP会被封。
指令:设置代理
代理类型:HTTP/HTTPS
代理地址:your_proxy_ip:port
用户名/密码:(如果需要认证)
代理IP来源:
- 免费代理(不稳定,适合测试)
- 付费代理服务(如快代理、熊猫代理,稳定)
策略5:Cookie复用(模拟已登录状态)
temu店群自动化报活动案例
如果网站对未登录用户限流,可以先手动登录,然后让影刀复用登录态。

1. 手动在影刀启动的浏览器里登录淘宝/拼多多
2. 登录完成后,影刀会自动保存Cookie
3. 下次启动浏览器时,Cookie自动带上,不需要重新登录
注意: 不要用影刀同时开多个浏览器窗口,Cookie可能会串。
第四部分:数据存储与去重
问题:重复采集同一条数据
翻页时可能采集到重复的商品(比如第1页最后一条和第2页第一条是同一个)。
解决方法:用商品ID去重
1. 启动Excel,读取已采集的数据(如果有的话)
2. 提取所有已采集的商品ID,保存到列表:collected_ids
3. 采集新数据时:
If 当前商品ID 在 collected_ids 里
→ 跳过(不写入Excel)
Else
→ 写入Excel
→ 把当前商品ID加入 collected_ids
商品ID怎么取?
淘宝商品URL里包含商品ID:
https://detail.tmall.com/item.htm?id=123456789
用正则表达式提取ID:
指令:正则表达式匹配
文本:goods_url
正则表达式:id=(\d+)
保存结果到:goods_id
第五部分:完整代码模板(可直接用)
淘宝采集模板(伪代码)
启动浏览器
跳转网址:"https://s.taobao.com/search?q=" + keyword
等待元素出现://div[@class='items'],超时15秒
设置变量:page = 1
设置变量:max_page = 5
设置变量:all_data = []
While 条件:page <= max_page
→ 获取相似元素列表://div[contains(@class,'item')],保存到:items
→ ForEach循环:items
→ 获取标题://a[contains(@class,'item-title')],保存到:title
→ 获取价格://span[contains(@class,'price')],保存到:price
→ 获取销量://span[contains(text(),'人付款')],保存到:sales
→ 列表追加:all_data 追加 [title, price, sales]
→ 点击://a[contains(@class,'next')]
→ 等待元素出现://div[@class='items'](确认新页面加载完成)
→ page = page + 1
→ 随机等待2-5秒(调用前面的Python代码)
启动Excel,打开结果文件
写入Excel:all_data(批量写入)
保存并关闭Excel
关闭浏览器
第六部分:常见报错与解决
| 报错 | 原因 | 解决 |
|---|---|---|
| 元素未找到(商品列表) | 页面被验证码拦截 | 加Try-Catch,失败时截图,换IP |
| 获取到的价格为空 | 价格是动态加载的,还没渲染出来 | 加等待1秒,再获取 |
| 翻页后还是同一批数据 | 页面没刷新,元素还是旧的 | 在点击下一页后,加"等待元素消失"确认旧列表消失 |
![]() |
| 写入Excel时报错 | 商品标题里有特殊字符(如/ :) | 用"文本替换"把特殊字符替换掉 |
| 流程跑得很慢 | 每采集一条都写入Excel | 先在内存里攒数据,最后批量写入 |
更多电商采集案例和完整流程模板,可以在 home.linyan.cloud 查找。
#影刀RPA #电商采集 #淘宝 #拼多多 #反爬策略
作者:林焱
更多推荐






所有评论(0)