影刀RPA新手教程:拼多多商品数据自动化采集——搜索定位→列表采集→翻页→导出
拼多多反爬比淘宝严,直接采集容易出验证码或封IP。
但用对方法——模拟真实用户、随机等待、降低频率——一套流程稳定跑一个月没问题。
这篇从搜索商品到翻页到存Excel,每一步都带上实测能用的XPath和参数设置。
一、整体流程结构
A_初始化(登录+创建文件)
↓
B_搜索关键词(输入+点击搜索)
↓

C_循环翻页采集(最多10页)
├─ C1_采集当前页商品列表
└─ C2_点击下一页
↓

D_保存并发送报告
耗时:每页约20-30个商品,采集10页约8-12分钟(社区版注意剩余时长)。
二、第一步:登录拼多多(A_初始化)
拼多多网页版需要微信扫码登录,但登录态可以保存。
操作步骤
- 拖入 “打开网页”,URL填
https://yangkeduo.com。 - 拖入 “等待元素出现”,判断是否已登录(如头像或用户名元素)。
- 如果未登录,等待用户扫码(弹提示框)。
- 登录成功后,用 “保存浏览器状态” 存下cookie,下次直接加载。
# 捕获元素:判断登录状态的用户头像

//div[@class="user-avatar"]
第一次运行:手动扫码登录,之后注释掉保存逻辑,改用加载状态。
# 后续运行直接加载
加载浏览器状态(路径="C:\pdd_cookie")
打开网页("https://yangkeduo.com")
三、第二步:搜索关键词(B_搜索关键词)
拼多多首页搜索框比较稳定。
捕获元素
# 搜索输入框
//input[@class="search-input"]
# 搜索按钮(放大镜图标)
//div[@class="search-icon"]
操作指令
- 拖入 “模拟输入”(拼多多建议用模拟输入,触发搜索建议)。
- 内容:关键词变量(如
手机)。 - 每个字符间隔:80-120毫秒。
- 内容:关键词变量(如
- 拖入 “点击元素”,点击搜索按钮。
- 等待搜索结果列表出现,超时15秒。
# 搜索结果商品列表容器
//div[@class="goods-list-view"]
容易踩的坑:
拼多多搜索框有时输入后要等0.5秒再点搜索,否则搜索按钮不可点。加一个“固定等待(500)”在输入之后、点击之前。
四、第三步:采集当前页商品列表(C1_采集单页)
捕获商品卡片容器
拼多多搜索结果页,每个商品是一个div,class含goods-card。
//div[contains(@class, "goods-card")]
在卡片内定位子元素
# 商品标题
.//div[contains(@class, "title")]
# 价格(当前售价)
.//span[contains(@class, "price")]
# 拼团价格/单独购买价格(有时不同)
.//div[contains(@class, "group-price")]
# 已拼件数(销量)
.//div[contains(@class, "sold-count")]
# 商品详情链接
.//a[contains(@class, "title-link")]/@href
采集逻辑(影刀原生指令版)
- 用 “获取相似元素列表” 拿到所有商品卡片,存
list_商品卡片。 - 用 “元素列表循环” 遍历。
- 在循环内,设置作用域为当前卡片。
- 用 “获取元素文本” 分别取标题、价格、销量。
- 用 “获取元素属性” 取链接(属性href)。
- 将四个值组装成列表,追加到
list_本页数据。 - 循环结束后,把
list_本页数据返回主流程或直接写入Excel。
注意:
- 销量文本可能是“10万+”,需要后处理;价格可能是“¥99.00”。
- 有些商品没有单独价格,要用Try-Catch给默认值。
五、第四步:翻页逻辑(C2_点击下一页)
拼多多搜索结果页有“下一页”按钮,但第1页后URL会带page=参数,也可以直接拼接URL跳转。
方法一:点击下一页按钮(推荐,适应性好)
# 下一页按钮
//a[contains(text(),'下一页')]
翻页循环:
当前页 = 1,最大页数 = 10。- 进入条件循环,条件:
当前页 <= 最大页数 且 下一页按钮存在。 - 调用
C1_采集单页。 - 写入Excel(每页写一次或累计写)。
- 点击下一页。
- 等待新页面加载(等待商品列表容器出现,超时15秒)。
- 随机等待3-8秒(防反爬)。
当前页 += 1。
方法二:URL拼接(速度快)
拼多多搜索结果的URL示例:
https://yangkeduo.com/search?q=手机&page=1
可以直接循环page参数,用“打开网页”跳转。
# Python代码拼接URL
base_url = "https://yangkeduo.com/search?q=" + 关键词 + "&page="
for 页码 in range(1, 11):
url = base_url + str(页码)
打开网页(url)
等待元素出现(商品列表容器)
采集当前页()
优点:不需要点击按钮,速度快。
缺点:如果拼多多改了URL规则会失效。建议两种都试,哪个稳定用哪个。
六、第五步:保存到Excel(D_保存)
表头设计
| 商品标题 | 价格 | 销量 | 商品链接 | 采集时间 |
|---|---|---|---|---|
操作步骤
- 流程开始时创建Excel文件,写入表头。
- 每采集完一页,用 “写入区域” 一次性追加该页的所有行。
- 全部完成后保存并关闭。
优化:
- 为了防止流程中途崩溃数据全丢,每采集一页就保存一次。
- 用“获取Excel最后使用行”定位追加位置。
# 伪代码
最后行 = 获取最后使用行("Sheet1")
写入区域("A" + str(最后行+1), 当前页数据列表)
保存Excel()
七、完整代码(指令结构)
A_初始化:
加载浏览器状态("pdd_cookie")
打开网页("https://yangkeduo.com")
创建Excel文件("拼多多采集结果.xlsx")
写入行数据(1, ["标题","价格","销量","链接","采集时间"])
B_主流程:
关键词 = "手机"
最大页数 = 10
当前页 = 1
进入元素列表循环(下一页按钮存在):
输出日志("开始采集第" + 当前页 + "页")
# 采集当前页
商品卡片列表 = 获取相似元素列表("商品卡片")
本页数据 = []
元素列表循环(商品卡片列表):
设置作用域(当前卡片)
标题 = 获取文本("标题", 默认="")
价格 = 获取文本("价格", 默认="")
销量 = 获取文本("销量", 默认="0")
链接 = 获取属性("商品链接", "href")
本页数据.append([标题,价格,销量,链接,当前时间()])
# 写入Excel
最后行 = 获取最后使用行()
写入区域("A" + str(最后行+1), 本页数据)
保存Excel()
# 翻页
if 当前页 == 最大页数: 跳出循环
点击元素("下一页")
等待元素出现("商品列表容器", 超时=15)
随机等待(3000, 8000) # 毫秒
当前页 += 1
输出日志("采集完成,共" + str(总条数) + "条")
八、拼多多特殊反爬应对
| 问题 | 解决方法 |
|---|---|
| 频繁出现验证码 | 每翻一页随机等待5-10秒,降低到每2秒一个请求以下 |
| 商品价格显示为“***”未登录 | 保持登录态,不要退出 |
| 销量数据是“10万+” | 用Python正则提取数字部分,乘以10000换算 |
| 采集几页后页面变空白 | 被临时封了,重启浏览器换IP(或加代理) |
| 点击下一页时弹出“访问频繁” | 加长等待到15秒,或换URL拼接方法 |
价格与销量清洗示例(Python代码指令)
# 输入:price_str ("¥99.00"), sales_str ("1.2万件")
# 输出:price_num (float), sales_num (int)
import re
# 价格:去掉¥,转数字
price_num = float(re.sub(r'[^0-9.]', '', price_str))
# 销量:处理“万”
sales_str_clean = re.sub(r'[^0-9万]', '', sales_str)
if '万' in sales_str_clean:
sales_num = int(float(sales_str_clean.replace('万', '')) * 10000)
else:
sales_num = int(sales_str_clean) if sales_str_clean.isdigit() else 0
九、社区版时长优化建议
- 用URL拼接翻页代替点击翻页,省去点击+等待动画时间。
- 每页采集时用“获取相似元素列表”+“循环”比逐个点击进入详情快很多。
- 数据清洗用Python代码指令(不占时长)。
- 设置最大页数为5-8页,保证整体在30分钟内。
常见问题速查
| 问题 | 原因 | 解决方法 |
|---|---|---|
| 搜索后没结果 | 输入太快没触发搜索 | 模拟输入+固定等待500ms再点搜索 |
| 商品卡片列表为空 | XPath不对或页面没加载完 | 加“等待元素出现”超时15秒 |
| 下一页按钮找不到 | 最后一页没有按钮 | 用“判断元素是否存在”作为循环条件 |
| 价格采集到空 | 拼团价和单独购买价不同 | 尝试多个XPath,用Try-Catch取第一个非空 |
| 流程跑20分钟自动停 | 社区版30分钟限制 | 拆分关键词或减少页数 |
推荐资源
- 拼多多反爬官方说明:其实没有,但经验是慢就是快。
- 影刀官方拼多多采集模板(市场搜索“拼多多”)。
- 我的习惯:每次采集前用浏览器无痕模式手动搜一遍,看页面结构有无变化。
- 扩展阅读:系列第16篇《翻页逻辑的3种实现方式》;系列第28篇《小红书采集》——结构类似。
作者:林焱
本文为《影刀RPA学习手册》系列文章之一,内容源于实操经验的整理与分享。
