影刀RPA新手教程:拼多多采集全流程实战——商品数据翻页与反爬处理

发布时间:2026/10/7 14:06:31

影刀RPA新手教程:拼多多采集全流程实战——商品数据翻页与反爬处理 影刀RPA新手教程拼多多采集全流程实战——商品数据翻页与反爬处理我第一次做拼多多采集的时候以为和淘宝一样直接上 XPath 就能搞定结果流程跑了 3 页就被封了 session。后来才知道拼多多的反爬逻辑和淘宝完全不是一个量级class 名会定期混淆价格字段用了万之类的展示文本直接存进去根本没法算。这篇把拼多多采集全流程梳理一遍——从安装影刀、定位元素到翻页判断、价格清洗、写入 Excel每个环节我都踩过坑全写进来了。案例主线搜索无线耳机采集前 10 页商品的标题、价格、销量、店铺名存 Excel。一、安装影刀先把浏览器插件装好影刀官网下载安装包安装后第一步别急着建流程——先装浏览器插件。很多新手跳过这步结果获取已打开的网页对象一直报错以为是代码问题折腾一下午。插件安装路径影刀主界面右上角→扩展→安装 Chrome 扩展。装完以后在 Chrome 扩展管理页确认一下插件已启用。如果用的是影刀自带浏览器不需要手动装但要注意影刀浏览器和系统 Chrome 不能同时运行否则会冲突报错。界面结构记三个区域就够用了左边是指令面板拖拽式操作中间是流程画布右边是变量和日志面板。编码模式才是长期用的模式新手先熟悉拖拽有感觉之后切编码效率高两倍。二、元素定位拼多多 CSS 选择器和 XPath 的真实区别拼多多搜索结果页先 F12 开 DevTools找商品列表容器。我的实际定位路径商品卡片容器div[data-area-idsearchResultListContainer] li.goods-list-container商品标题每个 li 里面.//div[contains(class,goods-title-text)]价格注意拼多多价格分两段整数部分 小数部分.//span[contains(class,price-int)] .//span[contains(class,price-decimal)]销量文本span.goods-sales店铺名.//span[contains(class,store-name)]XPath vs CSS 怎么选拼多多页面 class 名字有些会混淆a1b2c3这种随机串XPath 的contains(class,goods-title-text)比 CSS 的精确类名更稳。但是获取相似元素列表这种批量操作CSS 写法更简洁用browser.find_all_by_css()传 CSS 字符串比 XPath 少写不少代码。正则的使用场景价格文本采集回来是¥59.90要提取数字用importre price_str¥59.90pricere.sub(r[^\d.],,price_str)# 结果 59.90![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/63ef7ab32af24087ba9a0a29bef13486.png#pic_center)销量文本是1.2万转成数字sales_text1.2万if万insales_text:numfloat(re.sub(r[^\d.],,sales_text.split(万)[0]))*10000else:numfloat(re.sub(r[^\d],,sales_text))三、变量规划提前想好存什么采集类流程变量设计先于写流程。这次用到page_num整数当前第几页初始值 1all_data列表存所有商品数据每条是字典goods_list相似元素列表当前页的商品卡片has_next布尔是否有下一页item字典单条商品数据keytitle/price/sales/shop字典取值要注意采集到的字段如果某个商品没有销量显示直接item[sales]会报 KeyError。用item.get(sales, 0)更安全给个默认值兜底。四、流程控制翻页判断是关键翻页判断——不确定总页数怎么处理拼多多搜索结果页总页数显示在页面底部但更可靠的判断方式是看下一页按钮有没有disabled属性。fromxbotimportweb,sleepimportrandomdefmain(args):browserweb.get_active()page_num1all_data[]whileTrue:# 等待商品列表加载完成browser.wait_appear(商品列表容器)# 采集当前页见下一节page_datacollect_current_page(browser)all_data.extend(page_data)# 判断是否有下一页next_btn_classbrowser.find_by_css(button.page-next, a[aria-label下一页]).get_attribute(class)ifdisabledinnext_btn_classorpage_num10:break# 点击下一页 随机延时反爬核心browser.find_by_css(button.page-next).click()sleep(random.uniform(2.5,5.0))page_num1returnall_datawhile True 手动break是处理不知道总页数场景的标准写法。比for i in range(10)灵活因为有时候搜索词结果不足 10 页提前 break 比循环到找不到元素报错强多了。五、网页自动化采集逻辑 等待策略当前页采集函数defcollect_current_page(browser):page_result[]# 获取所有商品卡片goods_elementsbrowser.find_all_by_css(li.goods-list-container)foritemingoods_elements:try:titleitem.find_by_xpath(.//div[contains(class,goods-title-text)]).get_text()price_intitem.find_by_xpath(.//span[contains(class,price-int)]).get_text()price_decitem.find_by_xpath(.//span[contains(class,price-decimal)]).get_text()pricefloat(price_int.price_dec.strip(.))salesitem.find_by_xpath(.//span[contains(class,goods-sales)]).get_text()shopitem.find_by_xpath(.//span[contains(class,store-name)]).get_text()page_result.append({title:title,price:price,sales:sales,shop:shop})exceptExceptionase:# 单条失败不中断整个流程continuereturnpage_result等待策略三种情况用三种方式等固定时间sleep(3)——最简单但不精准浪费时间等元素出现browser.wait_appear(商品列表容器, timeout15)——推荐元素出现就继续等页面加载完browser.wait_load_completed()——适合跳转之后但有些 SPA 页面这个返回 True 但 DOM 还没渲染拼多多就是这样用法 2 更可靠弹窗处理拼多多时不时弹出领券弹窗在采集循环开始前加ifbrowser.wait_appear(关闭弹窗按钮,timeout3):browser.find(关闭弹窗按钮).click()timeout3够了超时自动返回 False不影响主流程。六、反爬策略真正有效的做法先说没用的固定 sleep(1) 这种规律性停顿爬虫检测系统一眼就识别出来。真正有效的四个组合随机延时每次操作后sleep(random.uniform(1.5, 4.0))范围要够大别用(0.5, 1.5)这种太规律的开启模拟真人操作影刀有内置指令开启模拟真人操作勾选仿真移动鼠标、“仿真操作停顿”设置最小停顿 1 秒、最大停顿 3 秒。这个指令包裹住采集区间拼多多检测鼠标轨迹的概率会降低不少滚动模拟每翻一页先滚动到底部再滚回来模拟人看内容的行为browser.scroll_to(locationbottom,behaviorsmooth)sleep(random.uniform(0.8,1.5))browser.scroll_to(locationtop,behaviorsmooth)监听网络请求拼多多价格有时候走 XHR 接口不在 DOM 里。用browser.start_monitor_network()监听browser.get_responses(urlapi/search, resource_typeXHR)拿接口数据比解析 DOM 更稳browser.start_monitor_network()browser.reload()responsesbrowser.get_responses(urlapi/search,resource_typeXHR)browser.stop_monitor_network()七、数据处理价格清洗和销量处理这是拼多多采集最容易忽视的环节。采回来的数据存 Excel 之前必须清洗。价格清洗¥59.90→ 去掉 ¥ 和非数字字符转 float部分商品价格显示59 没有小数用price_int .00补全再转 float拼多多有些商品是区间价59~89按最低价取price_text.split(~)[0]销量清洗defparse_sales(sales_text):ifnotsales_text:return0sales_textsales_text.replace(件,).replace(已购,).strip()if万insales_text:returnint(float(sales_text.replace(万,).replace(万,))*10000)returnint(re.sub(r\D,,sales_text)or0)写入 Excel 注意的坑写入123这种带全角括号的数字Excel 会自动变成-123。解决把数字转成字符串类型再写入或者写入前加一个空格前缀 123写入 datetime 类型时间戳用 office 模式会少 8 小时UTC 时区问题。解决转成字符串str(datetime_obj)再写入或者用 openpyxl 模式写入大量数据5000行之前先确认 Excel 进程没被占用。频繁读写 Excel 容易触发被呼叫方拒绝接收呼叫报错原因是 office 进程处于编辑状态。在读写操作前后加sleep(1)能缓解但根本方法是确保 Excel 文件是关闭状态八、鼠标键盘辅助操作有些拼多多搜索框需要先点击激活再输入直接用输入文字指令有时会失败因为焦点不在搜索框里。# 先点击搜索框再清空再输入search_inputbrowser.find_by_css(input[data-placeholder搜索商品/品牌])search_input.click()search_input.clear()search_input.input(无线耳机)# 按 Enter 搜索fromxbotimportkeyboard keyboard.press_and_release(enter)滚动加载商品列表有些分类页不是翻页而是滚动加载更多# 每次滚动 600px等加载for_inrange(5):browser.scroll_to(locationpoint,behaviorsmooth,top600*_,left0)sleep(random.uniform(1.2,2.0))九、平台实战拼多多 vs 淘宝的真实区别做过淘宝采集再做拼多多几个地方会踩坑价格字段结构不一样淘宝价格在一个完整的 span 里class 名price拼多多拆成整数和小数两个 span要拼起来。直接复制淘宝的 XPath 来用采回来全是空或者乱码登录检测更激进淘宝未登录也能搜索采集拼多多搜索一定要登录否则几页之后跳验证码。每次开流程先检测登录状态ifnotbrowser.wait_appear(用户头像,timeout5):raiseException(未登录请先手动登录拼多多)详情页结构拼多多商品详情页用了大量 JS 动态渲染进入详情页后要等待主图加载完才能采集。等待方式browser.wait_appear(商品主图, timeout20)比wait_load_completed()可靠搜索结果 URL 参数拼多多搜索 URL 里search_key无线耳机page2可以直接构造翻页 URL不用点击下一页按钮。减少点击动作也是降低被检测概率的方式forpageinrange(1,11):urlfhttps://www.pinduoduo.com/search_result/?search_key无线耳机page{page}browser.navigate(url)browser.wait_appear(商品列表容器,timeout20)sleep(random.uniform(2.0,4.0))十、系统联动采集结果发飞书通知采集完成后自动发飞书消息告诉自己今天跑完了共采了 XXX 条。importxbotdefnotify_feishu(count,file_path):msgf拼多多采集完成共{count}条数据文件{file_path}xbot.web.open(https://open.feishu.cn/open-apis/bot/v2/hook/你的webhook_token,load_timeout10)# 或者用 HTTP 请求指令发送用发送 HTTP 请求指令更稳定POST 到飞书机器人 webhookbody 里放 JSON 格式的消息内容。这个是系统联动里最常用的通知方式配一次以后所有流程都能复用。十一、工程化子流程封装和调试流程超过 30 步就要拆子流程否则排查问题极其痛苦。这次拼多多采集的子流程划分init_browser打开浏览器、登录检测、搜索关键词collect_page采集当前页数据返回列表turn_page翻页 随机等待返回 has_next 布尔值clean_data价格清洗 销量清洗输入原始列表返回清洗后列表write_excel写入 Excel输入数据列表 文件路径子流程参数传递影刀子流程支持传入参数和返回值用列表或字典传多个值。比如collect_page传入browser对象返回page_data列表。调试技巧流程出问题不要靠猜在疑似出错的地方加打印日志指令打印当前变量值。拼多多采集常见的排查点打印goods_elements的长度看是不是 0打印每条price_str的原始值看清洗前是什么格式。命名规范变量名用下划线小写goods_list子流程名用动词开头collect_page、write_excel别用 “子流程1”、“流程A” 这种回头看根本不知道是干什么的。十二、常见报错速查报错信息原因解决方案UIAError: 等待元素超时元素没加载出来 / XPath 写错了先手动验证 XPath 在 DevTools 里能选中增大 timeout 到 30sArray to String Conversion把列表直接写入 Excel 单元格用str()转字符串或,.join(list)再写入被呼叫方拒绝接收呼叫Excel 被占用或处于编辑状态确认 Excel 关闭写入操作前后加 sleep(1)find_all 返回空列表class 名被混淆 / 页面未加载完用contains(class,...)做模糊匹配检查是否有 iframeprice 转 float 报错价格文本含特殊字符或为空用 try-except 捕获跳过异常条目检查原始文本格式翻页后数据和上一页相同翻页点击没生效页面没刷新翻页后用wait_disappear等旧内容消失再采集常见踩坑合集再过一遍拼多多每次搜索完都要滚动几下否则懒加载的商品不出来采集到的只有前几条价格区间商品59~89要做 split 处理否则转 float 直接报错不要用固定 sleep用random.uniform(min, max)范围至少 1.5 秒差值详情页和列表页的 XPath 完全不同要分别捕获别混用流程跑完之后检查 Excel 行数是否和预期匹配有时候 try-except 静默跳过了很多条更多采集技巧可以参考 home.linyan.cloud里面有完整的拼多多/淘宝/小红书实战案例和代码模板。#影刀RPA #新手教程 #拼多多采集 #网页自动化 #RPA教程 #数据采集作者林焱
延伸阅读

更多相关文章

2026/10/7 14:06:31

太阳能一体化光源选型核心指标与工程适配技术解析

在离网照明与太阳能光伏应用场景中,太阳能一体化光源凭借集成度高、部署灵活、免布线等特性,已成为道路照明、景观亮化、偏远区域功能照明的关键技术路线。然而,行业内产品形态多样、技术参数标注口径不一,工程选型阶段若对核心指…

2026/10/7 14:06:31

Vibe Coding 实战工作流:从需求描述到 AI 辅助编程的完整闭环

Vibe Coding 实战工作流:从需求描述到 AI 辅助编程的完整闭环 过去大半年,我几乎把所有带"实验性质"的项目都扔给了 AI 来写。最开始是因为一个周末想做个内网小工具,懒得自己一行行敲,就让对话窗口里的模型帮我生成&am…

2026/10/7 14:56:35

自主机器人入门指南:ROS、SLAM与路径规划实战

1. 从一堆热词里看“自主机器人基础”到底在讲什么“自主机器人基础”这个标题看起来像是一门课的导论,或者一个系列分享的第一篇。但如果你把围绕它的热搜词摊开来看,会发现大家真正在搜的东西非常具体:ROS怎么装、SLAM怎么建图、路径规划算…

2026/10/7 14:56:35

多品牌设备混合接入的恒温恒湿组态改造实战指南

做自控项目的这几年,我最大的感触是:真正让人熬白头的往往不是设备本身有多高端,而是怎么把一堆不同厂家的设备凑到一起协同工作。前段时间我接手了一个机房恒温恒湿改造项目,现场的情况就非常典型——温湿度变送器是A品牌&#x…

2026/10/7 14:56:35

ARMxy模块化工业控制器:储能与自动化场景的PLC+网关+工控机融合方案

1. 这不是又一个“工业控制器”噱头,而是现场工程师等了十年的硬件重构方案ARMxy模块化工业控制器这个词,最近在储能系统集成商、自动化产线调试工程师和中小型设备制造商的朋友圈里反复刷屏。我上个月在东莞一家做锂电PACK产线升级的客户现场&#xff0…

2026/10/7 14:56:34

从零搭建自主机器人:ROS环境搭建、SLAM建图与多传感器融合全流程

1. 从零搭建自主机器人:为什么我劝你先搞懂这套底层逻辑很多人第一次接触自主机器人,脑子里想的都是“我要造一个能自己跑、自己避障、自己建图的小车”。这个想法没错,但如果你一上来就买电机、焊驱动、写PID,大概率会在第三周把…

2026/10/7 14:51:34

Paperxie 深度测评|一站式 AI 论文辅助平台

1. 产品概述 市面上绝大多数 AI 学术工具,都属于单点功能工具:有的只能做文字润色,有的只能画流程图,各模块相互独立。在实际毕设创作中,需要反复在多个网站之间切换,文件导入导出频繁,很容易出…

2026/10/5 6:32:56

Jev+Agent接管浏览器:browser-use实战与jev-ultrafast性能优化

1. 从“Jev”说起:为什么我要把Agent接进浏览器“Jev”这个词最近在圈子里出现的频率越来越高,很多人第一次听到会以为是某个新模型的名字,其实它更像是一种思路——把Jev模型的能力当作底座,通过Agent的方式去接管浏览器&#xf…

2026/10/7 8:18:33

多智能体集群实战:DeepAgents编排、MCP与A2A协议及Skills体系

1. 从"单兵作战"到"集群协同":多智能体编排到底在解决什么问题如果你最近在折腾 Agent 相关的东西,大概率会有一种感觉:单个 Agent 能做的事情,其实很快就摸到天花板了。你给它一个提示词,挂几个工…

2026/10/6 17:46:51

无源低通滤波器设计实战:从RC到LC,手把手教你避开那些坑

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/7 1:05:03

ESP32免重刷固件:浏览器直接修改NVS键值实现WiFi配置更新

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/7 1:05:03

SAP HANA查询结果导出CSV:避开乱码、性能与权限的实用指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/7 1:05:03

数字后端Placement阶段Density与Congestion控制实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑