发布时间:2026/6/16 23:56:12
影刀RPA新手教程_父子元素定位与相似元素列表完整操作
影刀RPA新手教程父子元素定位与相似元素列表的完整操作流程做电商数据采集时页面上的商品卡片长得一模一样——标题、价格、销量、店铺名每个卡片结构完全相同。你要一条一条采不可能逐个捕获。影刀里专门有一类指令处理这种场景。但用之前你得先搞懂两件事怎么定位到这一组卡片相似元素列表以及怎么从每个卡片里提取具体字段父子定位。这两个概念绑在一起拆不开。一、什么情况下用相似元素列表先判断你的页面属于哪种情况页面结构该用什么同一个页面有多个结构完全相同的区块商品卡片、搜索结果行、评论条目相似元素列表只有一个元素没有同类重复普通元素捕获多个元素但不是相同结构比如顶部导航栏侧边栏正文区分别单独捕获淘宝搜索结果页、拼多多商品列表、小红书笔记流——典型的第一种情况。二、捕获相似元素列表的正确姿势步骤1先捕获任意一个卡片点击影刀顶部捕获元素鼠标移到第一个商品卡片上。注意不要在整个卡片外围点而是点卡片的外层容器——那个刚好包住标题价格图片的div。影刀会生成一个XPath定位。步骤2在详情面板勾选相似元素捕获后右侧详情面板有一个开关叫获取相似元素列表。把它的开关打开蓝色。点击验证按钮影刀会用这个XPath去找所有匹配的元素弹窗显示找到了几条。如果找到了正确的数量和页面上看到的卡片数一致说明定位OK。步骤3确认相似度生效范围店群矩阵自动化突破运营极限如果验证结果只有1条而不是N条问题出在XPath太精确了——它独一定位到了第一个卡片。解决办法在第三部分讲。三、为什么你的XPath只定位到一个元素这是最高频的问题。影刀的相似元素列表依赖XPath定位到一个父容器然后自动找所有同类。但如果你的XPath里用了具体的文本或索引就会锁死。错误示例# ❌ 捕获元素第1个商品卡片索引锁死了(//div[classgoods-card])[1]正确写法# ✅ 捕获元素商品卡片容器不带索引//div[classgoods-card]# ✅ 如果class相同但结构不同加属性过滤![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/1cb117dc60314acbb21460bb77290e89.png#pic_center)//div[classgoods-cardanddata-spm]去掉括号和[N]索引让XPath定位到一类而非一个。四、父子元素定位从卡片里取字段拿到相似元素列表后下一个问题是怎么从每个卡片里取出商品标题、“价格”、销量这些子元素影刀提供了两种方式方式A直接在画布里用获取元素文本拖入获取相似元素列表得到商品卡片列表。再拖入遍历列表然后对每条循环拖一个获取元素文本在元素参数里选父子定位模式父元素选当前循环项即当前商品卡片子元素路径写这个卡片内部的XPath比如标题的class# 捕获元素商品卡片内的标题相对路径以卡片为父容器.//div[classtitle]# 捕获元素商品卡片内的价格.//span[classprice]/em# 捕获元素商品卡片内的销量.//span[classsales]注意那个点.——.//表示从当前父容器开始向下找不加点就是从整个页面开始找会把所有卡片的标题都返回。方式B用Python代码指令一条条取在Python图标里写更灵活的逻辑# 在Python代码指令中处理相似元素列表importwin32com.client# 假设前面的指令已将元素列表传给Python# 遍历每个卡片提取子元素foridx,cardinenumerate(card_list):# card_list是前一步获取的标题card.FindElementByXPath(.//div[classtitle]).Text 价格card.FindElementByXPath(.//span[classprice]).Text 销量card.FindElementByXPath(.//span[classsales]).Text result_list.append([标题,价格,销量])# 追加到结果列表新手更推荐方式A纯影刀指令操作不依赖Python环境。五、完整实战案例拼多多搜索结果采集# 拼多多商品搜索→列表采集→写表格 完整流程打开网页(https://mobile.yangkeduo.com/search?keyword连衣裙)等待元素出现(搜索页面标识,5秒)# 第一步获取所有商品卡片的相似元素列表# 捕获元素商品卡片外层容器# //div[data-active0]获取相似元素列表(商品卡片列表)-卡片列表# 第二步创建结果表新建Excel-采集结果 写入行数据(采集结果,[序号,商品名称,价格,销量万件,店铺名])# 第三步遍历每个卡片提取子元素遍历列表(卡片列表,当前卡片):序号当前循环索引1# 父子定位从当前卡片找标题获取元素文本(当前卡片,.//h3)-商品名# 父子定位从当前卡片找价格获取元素文本(当前卡片,.//span[classprice])-商品价格# 父子定位从当前卡片找销量获取元素文本(当前卡片,.//span[classsales])-商品销量# 父子定位从当前卡片找店铺名获取元素文本(当前卡片,.//span[classshop-name])-店铺名# 写入结果表写入行数据(采集结果,[序号,商品名,商品价格,商品销量,店铺名])# 第四步保存到文件导出表格(采集结果,D:\拼多多连衣裙数据_20260609.xlsx)关键点循环里的四个获取元素文本用的都是父子定位模式——父元素是当前卡片子元素路径是以点开头的相对XPath。这个点不能漏。六、当相似元素列表数量不对时问题1只找到1条但页面上明明有20个原因XPath太具体定位到了唯一元素。修复去掉XPath里的索引[N]和具体文本匹配。# ❌ 只有一个结果//div[classcard][3]# ✅ 去掉索引返回所有//div[classcard]问题2找到了30条但页面上只有20个temu店群自动化报活动案例原因有些隐藏的卡片也被算进去了display:none的备选卡片。修复加过滤条件排除隐藏元素。# 排除隐藏的元素//div[classcardandnot(contains(style,display:none))]问题3采集到一半报错元素已失效原因翻页后页面重渲染之前获取的相似元素列表对象失效了。修复每次翻页后重新获取相似元素列表不要复用旧对象。条件循环(True):获取相似元素列表(商品卡片列表)-卡片列表# 每页重新获取遍历列表(卡片列表,当前卡片):提取数据...判断元素是否存在(下一页按钮)如果 结果为真:点击元素(下一页按钮)等待元素出现(列表加载完成标记,3秒)否则:跳出循环七、父子定位的注意事项子元素路径里不要有绝对定位# ❌ 绝对路径——父容器变化就失效//div[1]/div[2]/div[3]//h3# ✅ 相对路径——只描述卡片内部结构.//h3[classtitle]不要把获取元素文本和获取元素属性搞混获取元素文本→ 拿到元素里显示的文字比如 “连衣裙夏季新款 ¥128”获取元素属性→ 拿到元素的HTML属性值比如href、src、data-id商品链接、图片地址这些用属性获取标题和价格用文本获取。八、易错速查错误后果正确做法XPath带了[N]索引只返回1条去掉索引子元素路径忘加.拿到的是整个页面第一个匹配写.//而非//翻页后复用旧列表报元素已失效每页重新获取相似元素列表隐藏元素也被计入了数据重复加not(contains(style,‘display:none’))过滤父子定位选了错误的父元素提取的字段串行确认父元素就是卡片的外层容器作者林焱本文为《影刀RPA学习手册》系列文章之一内容源于实操经验的整理与分享。

相关新闻

软件测试—JMeter—跨线程组关联
2026/6/16 23:56:11

软件测试—JMeter—跨线程组关联

一、介绍不同线程组之间传递参数的方法,使用跨线程组关联。涉及JMeter组件:Beanshell取样器,函数助手中的setproerty和property函数等。二、实验过程2.1 第一个线程组1. 测试计划下添加—线程组1—添加取样器http请求。第一个http请求服务器&…

阅读更多
分屏游戏革命:Nucleus Co-Op让单机游戏变身多人派对
2026/6/15 7:55:07

分屏游戏革命:Nucleus Co-Op让单机游戏变身多人派对

分屏游戏革命:Nucleus Co-Op让单机游戏变身多人派对 【免费下载链接】nucleuscoop Starts multiple instances of a game for split-screen multiplayer gaming! 项目地址: https://gitcode.com/gh_mirrors/nu/nucleuscoop 还在为单机游戏只能一人独享而遗憾…

阅读更多
MC9S12E256时钟复位模块CRGV4与Port AD中断配置详解
2026/6/15 20:35:12

MC9S12E256时钟复位模块CRGV4与Port AD中断配置详解

1. 项目概述与核心价值在嵌入式开发,尤其是汽车电子和工业控制这类对可靠性要求极高的领域,MCU的“心跳”与“保险丝”往往决定了整个系统的生死。这个“心跳”就是系统时钟,它驱动着每一条指令的执行;而“保险丝”则是复位与看门…

阅读更多
MainsailOS:3D打印机控制系统的终极集成方案
2026/6/16 22:58:22

MainsailOS:3D打印机控制系统的终极集成方案

MainsailOS:3D打印机控制系统的终极集成方案 【免费下载链接】MainsailOS This Raspberry Pi distribution for managing Klipper 3D printers with Mainsail provides all you need. 项目地址: https://gitcode.com/gh_mirrors/ma/MainsailOS 在3D打印技术日…

阅读更多
如何快速掌握跨平台文本编辑器:Notepad--的完整使用指南
2026/6/16 22:58:22

如何快速掌握跨平台文本编辑器:Notepad--的完整使用指南

如何快速掌握跨平台文本编辑器:Notepad--的完整使用指南 【免费下载链接】notepad-- 一个支持windows/linux/mac的文本编辑器,目标是做中国人自己的编辑器,来自中国。 项目地址: https://gitcode.com/GitHub_Trending/no/notepad-- No…

阅读更多
Win11Debloat:重新定义Windows系统的纯净与高效
2026/6/16 22:58:22

Win11Debloat:重新定义Windows系统的纯净与高效

Win11Debloat:重新定义Windows系统的纯净与高效 【免费下载链接】Win11Debloat A simple, lightweight PowerShell script that allows you to remove pre-installed apps, disable telemetry, as well as perform various other changes to declutter and customiz…

阅读更多
感知机:NLP中不可绕过的线性分类思想与决策边界原理
2026/6/16 22:58:22

感知机:NLP中不可绕过的线性分类思想与决策边界原理

1. 从手写数字识别开始:为什么今天还要讲“感知机”这个老古董? 你打开任何一本现代深度学习教材,翻到NLP章节,大概率会直接跳到Transformer、BERT、LLaMA这些响当当的名字。但如果你真想搞懂这些大模型底层到底在“算什么”&…

阅读更多
代码路由系统:多模型动态决策与高效生成实践
2026/6/16 22:58:22

代码路由系统:多模型动态决策与高效生成实践

1. 项目概述:这不是一个“模型”,而是一套动态决策系统“Claude Code Router: Multi-Model Routing for Efficient Coding”——光看标题,很多人第一反应是:“哦,又一个调用多个大模型的API封装工具?”但实…

阅读更多
Django REST Framework实战:从零构建企业级API服务
2026/6/16 21:58:22

Django REST Framework实战:从零构建企业级API服务

Django REST Framework实战:从零构建企业级API服务 【免费下载链接】Python-100-Days Python - 100天从新手到大师 项目地址: https://gitcode.com/GitHub_Trending/py/Python-100-Days 在当今前后端分离的开发模式中,API已成为连接客户端与服务端…

阅读更多
别再只用BERT了!用Transformers库的AutoModel,5分钟搞定文本相似度计算(附代码对比)
2026/6/16 18:17:55

别再只用BERT了!用Transformers库的AutoModel,5分钟搞定文本相似度计算(附代码对比)

超越BERT:用Transformers库高效实现文本相似度计算的三种实战方案在自然语言处理领域,文本相似度计算是信息检索、问答系统和推荐系统等应用的核心技术。传统方法如TF-IDF或Word2Vec已逐渐被基于Transformer的预训练模型所取代。Hugging Face的Transform…

阅读更多
Prompt Engineering:重构人机协作的工程化方法论
2026/6/16 20:00:23

Prompt Engineering:重构人机协作的工程化方法论

1. 项目概述:这不是“写提示词”,而是重构人机协作的底层逻辑“Prompt Engineering”这个词,这两年被讲得太多,也太轻飘。很多人把它理解成“给AI发指令的技巧”,甚至简化为“多加几个形容词”“换种说法再试一次”。我…

阅读更多
Anthropic提示层归零:模型即协议的工程实践
2026/6/16 0:39:53

Anthropic提示层归零:模型即协议的工程实践

1. 项目概述:这不是一次普通更新,而是一次架构级“蒸发”“Anthropic Just Shipped the Layer That’s Already Going to Zero”——这个标题一出来,我正在调试一个Claude调用链的终端前停了三秒。不是因为震惊,而是因为熟悉&…

阅读更多
2026 AI简历编辑平台深度测评与使用教程:ATS扫描、JD匹配、多版本投递怎么选?(首推 OfferGoose)
2026/6/16 0:57:58

2026 AI简历编辑平台深度测评与使用教程:ATS扫描、JD匹配、多版本投递怎么选?(首推 OfferGoose)

(先给结论,节省时间) 只想最快把简历“拉到及格线更贴JD”:优先从 鹅来面 开始——先做简历评分与岗位匹配度,再按建议改一版可投递稿。投递量很大、需要职位管理:偏向 Teal(职位追踪 多份简历…

阅读更多
Java毕业设计-面向学生竞赛的团队组建与信息管控系统设计 SpringBoot 架构下高校竞赛团队管理系统的设计与实践(源码+LW+部署文档+全bao+远程调试+代码讲解等)
2026/6/16 0:57:58

Java毕业设计-面向学生竞赛的团队组建与信息管控系统设计 SpringBoot 架构下高校竞赛团队管理系统的设计与实践(源码+LW+部署文档+全bao+远程调试+代码讲解等)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

阅读更多
Windows内存清理终极指南:Mem Reduct让你的电脑告别卡顿的简单方法
2026/6/16 0:57:58

Windows内存清理终极指南:Mem Reduct让你的电脑告别卡顿的简单方法

Windows内存清理终极指南:Mem Reduct让你的电脑告别卡顿的简单方法 【免费下载链接】memreduct Lightweight real-time memory management application to monitor and clean system memory on your computer. 项目地址: https://gitcode.com/gh_mirrors/me/memre…

阅读更多
GIT修改用户名
2026/6/16 5:55:51

GIT修改用户名

在GIT中修改用户名可按以下步骤操作: 查看当前git的用户名,使用命令git config --list或git config user.name。修改git用户名,使用命令git config --global user.name "xxx(新的用户名)",将其中…

阅读更多
Win11Debloat:让你的Windows系统重获新生的终极优化工具
2026/6/16 16:55:24

Win11Debloat:让你的Windows系统重获新生的终极优化工具

Win11Debloat:让你的Windows系统重获新生的终极优化工具 【免费下载链接】Win11Debloat A simple, lightweight PowerShell script that allows you to remove pre-installed apps, disable telemetry, as well as perform various other changes to declutter and …

阅读更多
技术深度解析:m4s-converter实现原理与B站缓存视频转换最佳实践
2026/6/15 21:13:35

技术深度解析:m4s-converter实现原理与B站缓存视频转换最佳实践

技术深度解析:m4s-converter实现原理与B站缓存视频转换最佳实践 【免费下载链接】m4s-converter 一个跨平台小工具,将bilibili缓存的m4s格式音视频文件合并成mp4 项目地址: https://gitcode.com/gh_mirrors/m4/m4s-converter m4s-converter是一个…

阅读更多