Playwright爬虫xpath获取技巧

示例一

<button class="MuiButtonBase-root MuiButton-root MuiLoadingButton-root MuiButton-contained MuiButton-containedPrimary MuiButton-sizeLarge MuiButton-containedSizeLarge MuiButton-colorPrimary MuiButton-fullWidth MuiButton-root MuiLoadingButton-root MuiButton-contained MuiButton-containedPrimary MuiButton-sizeLarge MuiButton-containedSizeLarge MuiButton-colorPrimary MuiButton-fullWidth css-wxfct4" tabindex="0" type="submit" id=":r6:"><span class="MuiLoadingButton-label css-oz8hdd"><span>确认</span></span><span class="MuiTouchRipple-root css-4mb1j7"></span></button>

1. 通过 id 属性获取 XPath

如果 id 是唯一的,可以直接通过 id 来定位该按钮:

//button[@id=':r6:']

这个 XPath 会选择 id=":r6:"<button> 元素。

2. 通过 class 属性获取 XPath

由于按钮有多个类名,可以使用类名进行定位。如果你想选择包含特定类名的按钮,可以使用 contains() 方法:

//button[contains(@class, 'MuiButton-containedPrimary') and contains(@class, 'MuiButton-sizeLarge')]

这个 XPath 会选择同时包含 MuiButton-containedPrimaryMuiButton-sizeLarge 类名的按钮。

3. 通过按钮文本("确认")获取 XPath

如果你希望通过按钮文本内容来定位,可以使用以下 XPath:

//button[.//span[text()='确认']]

这个 XPath 会选择按钮内部包含 <span> 标签且文本内容为 "确认" 的 <button> 元素。

4. 通过 type 属性获取 XPath

如果你想通过 type 属性来定位:

//button[@type='submit']

这个 XPath 会选择 type="submit"<button> 元素。

5. 综合选择(通过 idclass 和按钮文本)

为了确保定位准确,你可以通过多个属性来组合选择。例如:

//button[@id=':r6:' and contains(@class, 'MuiButton-containedPrimary') and .//span[text()='确认']]

示例二

<div class="MuiStack-root css-1w7p9qt" variant="borderless"><div class="MuiStack-root css-1ilan5m"><img src="/images/flags/aq.svg" style="display: block; width: 30px; height: 30px;"></div><i color="inherit" size="20" class="iconfont icon-arrow-down-simple css-1k924bf"></i></div>

1. 定位图片 (<img>) 元素

图片 (<img>) 的 src 属性是唯一的,因此你可以通过 src 来定位该图片:

//img[@src='/images/flags/aq.svg']

这个 XPath 会选中 src='/images/flags/aq.svg'<img> 元素。

2. 通过父元素定位图片

如果你想定位图片 <img> 元素,并且考虑到它的父元素 <div> 类名为 MuiStack-root css-1ilan5m,可以通过父元素来精确定位:

//div[@class='MuiStack-root css-1ilan5m']//img[@src='/images/flags/aq.svg']

这个 XPath 会在 class='MuiStack-root css-1ilan5m' 的父元素下,选择 src='/images/flags/aq.svg' 的图片元素。

3. 定位图标元素 (<i>)

你可以通过图标的 class 属性来定位图标元素:

//i[@class='iconfont icon-arrow-down-simple css-1k924bf']

这个 XPath 会选择 class='iconfont icon-arrow-down-simple css-1k924bf'<i> 元素。

4. 通过整个父元素定位图标

如果你希望通过父容器来定位图标,可以结合父元素的类名来选择图标:

//div[@class='MuiStack-root css-1w7p9qt']//i[@class='iconfont icon-arrow-down-simple css-1k924bf']

这个 XPath 会选中位于 class='MuiStack-root css-1w7p9qt' 的父元素下的图标 <i> 元素。

5. 组合父元素和图片的定位

如果你想要通过组合父元素和图片的类名来定位图片,可以使用以下 XPath:

//div[@class='MuiStack-root css-1ilan5m']//img[@style='display: block; width: 30px; height: 30px;']

示例三

<p class="MuiTypography-root MuiTypography-body1 css-g6tbiw">澳大利亚</p>

这是一个包含文本 "澳大利亚" 的 <p> 元素,并且它具有多个 class 属性值。以下是几种可能的 XPath 表达式来定位该 <p> 元素:

1. 通过 class 属性定位

由于该 <p> 元素具有多个类名,你可以通过组合这些类名来精确定位它:

//p[@class='MuiTypography-root MuiTypography-body1 css-g6tbiw']

该 XPath 会选中 class='MuiTypography-root MuiTypography-body1 css-g6tbiw'<p> 元素。

2. 通过文本内容定位

如果你想根据元素的文本内容来定位该 <p> 元素,可以使用以下 XPath:

//p[text()='澳大利亚']

这个 XPath 会选中文本内容为 "澳大利亚" 的 <p> 元素。

3. 通过部分类名匹配定位

有时类名可能会发生变化,但可以通过部分类名匹配来定位元素。例如,使用 contains() 函数来匹配类名:

//p[contains(@class, 'MuiTypography-root') and contains(@class, 'css-g6tbiw')]

这个 XPath 会选中 class 属性包含 MuiTypography-rootcss-g6tbiw<p> 元素。

4. 通过父元素定位

如果该 <p> 元素位于某个特定的父元素内,你也可以通过父元素来定位。例如,假设它位于某个特定 div 中:

//div//p[text()='澳大利亚']

这个 XPath 会选中父元素是 <div> 的情况下,文本内容为 "澳大利亚" 的 <p> 元素。

5. 通过多个类名精确定位

//p[@class='MuiTypography-root MuiTypography-body1 css-g6tbiw']

示例四

<span class="MuiButtonBase-root MuiButton-root MuiButton-text MuiButton-textPrimary MuiButton-sizeMedium MuiButton-textSizeMedium MuiButton-colorPrimary MuiButton-root MuiButton-text MuiButton-textPrimary MuiButton-sizeMedium MuiButton-textSizeMedium MuiButton-colorPrimary SendCodeButton css-7ans5j" tabindex="0" role="button">发送验证码</span>

我们可以通过多种方式来定位该元素。以下是一些可能的 XPath 表达式:

1. 通过文本内容定位

这是最简单的方法,如果你只关心元素的文本内容,可以使用以下 XPath:

//span[text()='发送验证码']

该 XPath 会选中文本内容为 "发送验证码" 的 <span> 元素。

2. 通过类名定位

由于该 <span> 元素有多个类名,你可以使用 @class 属性来定位该元素。由于类名较长且有重复部分,最好选择具有唯一性的类名,例如:

//span[contains(@class, 'SendCodeButton')]

此 XPath 会选中 class 属性中包含 "SendCodeButton" 的 <span> 元素。

3. 通过 role 属性定位

如果你想通过 role 属性来定位该元素,可以使用如下 XPath:

//span[@role='button' and text()='发送验证码']

这个 XPath 会选中 role='button' 且文本内容为 "发送验证码" 的 <span> 元素。

4. 通过 tabindex 属性定位

tabindex 属性通常用于指定页面的 tab 键顺序。你也可以使用它来定位元素:

//span[@tabindex='0' and text()='发送验证码']

该 XPath 会选中 tabindex='0' 且文本内容为 "发送验证码" 的 <span> 元素。

5. 通过类名的组合定位

由于类名包含多个唯一标识符,可以通过组合类名来精确定位该元素。例如,使用 contains() 函数来匹配部分类名:

//span[contains(@class, 'MuiButton-root') and contains(@class, 'MuiButton-textPrimary')]

该 XPath 会选中 class 属性中包含 MuiButton-rootMuiButton-textPrimary<span> 元素。

6. 通过完整类名定位

如果类名的组合在页面中是唯一的,可以通过完全匹配类名来精确定位:

//span[@class='MuiButtonBase-root MuiButton-root MuiButton-text MuiButton-textPrimary MuiButton-sizeMedium MuiButton-textSizeMedium MuiButton-colorPrimary MuiButton-root MuiButton-text MuiButton-textPrimary MuiButton-sizeMedium MuiButton-textSizeMedium MuiButton-colorPrimary SendCodeButton css-7ans5j']

这个 XPath 选中 class 属性完全匹配的 <span> 元素。

7. 通过多条件组合定位

你也可以组合多个属性来精确定位,例如结合 classroletext 内容:

//span[contains(@class, 'MuiButton-root') and @role='button' and text()='发送验证码']

这个 XPath 会选中 class 中包含 MuiButton-rootrolebutton,并且文本为 "发送验证码" 的 <span> 元素。

示例五

<span class="MuiTypography-root MuiTypography-body1 MuiListItemText-primary css-g6tbiw">短信</span>

我们可以通过多种方法来定位它,下面是一些可能的 XPath 表达式:

1. 通过文本内容定位

如果你只关心文本内容为 "短信" 的元素,可以使用以下 XPath:

//span[text()='短信']

这个 XPath 会选中文本内容为 "短信" 的 <span> 元素。

2. 通过类名定位

由于该 <span> 元素有多个类名,你可以使用 @class 属性来定位它。例如:

//span[contains(@class, 'MuiTypography-root') and contains(@class, 'MuiTypography-body1')]

这个 XPath 会选中 class 属性中包含 MuiTypography-rootMuiTypography-body1<span> 元素。

3. 通过类名的组合定位

如果你想通过类名中的多个部分来精确定位该元素,可以结合类名:

//span[contains(@class, 'MuiTypography-root') and contains(@class, 'MuiListItemText-primary')]

此 XPath 会选中 class 属性中同时包含 MuiTypography-rootMuiListItemText-primary<span> 元素。

4. 通过类名和文本内容结合定位

你也可以结合 class 属性和文本内容来定位该元素:

//span[contains(@class, 'MuiTypography-body1') and text()='短信']

这个 XPath 会选中 class 包含 MuiTypography-body1 且文本内容为 "短信" 的 <span> 元素。

5. 通过完整类名定位

如果类名在页面中是唯一的,可以使用完整的类名来精确定位:

//span[@class='MuiTypography-root MuiTypography-body1 MuiListItemText-primary css-g6tbiw']

这个 XPath 会选中 class 属性完全匹配的 <span> 元素。

6. 通过 text() 和多个属性结合定位

你可以结合多个属性来精确定位,例如:

//span[@class='MuiTypography-root MuiTypography-body1 MuiListItemText-primary css-g6tbiw' and text()='短信']

这个 XPath 会选中 class 完全匹配且文本为 "短信" 的 <span> 元素。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/495925.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

mongodb和Cassandra

mongodb的一致性问题&#xff1a; 15.MongoDB的一致性(读关注与写关注)_mongo w选项-CSDN博客 孤儿节点问题&#xff1a; 技术干货 | MongoDB 偶遇孤儿文档及处理方法-腾讯云开发者社区-腾讯云 分片集群MongoDB迁移前清除孤儿文档 由数据迁移至MongoDB导致的数据不一致问题…

4.3 数据库HAVING语句

having子句要和group by子句联合起来才能使用&#xff0c;不能单独去使用&#xff0c;接下来咱们看一下为什么要引入having子句语法呢&#xff1f;引入having子句也是出于无奈&#xff0c;因为有些条件查询&#xff0c;用group by子句并不能满足要求&#xff0c;比如说查询部门…

支持向量机入门指南:从原理到实践

目录 1 支持向量机的基本概念 1.2 数学表达 2 间隔与支持向量 2.1 几何间隔 2.2 支持向量的概念 2.3 规范化超平面 2.4 支持向量的深入分析 2.4.1 支持向量的特征 2.4.2 支持向量的作用 2.4.3 支持向量的代数表示 2.5 KKT条件 3 最优化问题 3.1 问题的形成 3.2 规…

使用驱动器光盘需格式化:深度解析与数据恢复全攻略

一、驱动器光盘需格式化的现象概述 在日常使用驱动器光盘的过程中&#xff0c;用户可能会遇到系统提示“驱动器中的磁盘未被格式化&#xff0c;是否现在格式化&#xff1f;”的警告。这一提示通常意味着光盘上的文件系统已损坏或无法被系统正常识别&#xff0c;导致无法读取光…

论文研读:AnimateDiff—通过微调SD,用图片生成动画

1.概述 AnimateDiff 设计了3个模块来微调通用的文生图Stable Diffusion预训练模型, 以较低的消耗实现图片到动画生成。 论文名&#xff1a;AnimateDiff: Animate Your Personalized Text-to-Image Diffusion Models without Specific Tuning 三大模块&#xff1a; 视频域适应…

NPM老是无法install,timeout?npm install失败

NPM老是无法install&#xff0c;timeout&#xff1f; 尝试一下如下操作 一、 更换国内源 npm config set registry https://registry.npmmirror.com npm install或指定源install npm install pkg --registry https://registry.npmmirror.com --legacy-peer-deps如下图 二…

【LeetCode 面试经典150题】详细题解之矩阵篇

【LeetCode 面试经典150题】详细题解之矩阵篇 1 矩阵的基础1.1 表示矩阵1.2 创建矩阵相关题目 2 36.有效的数独 &#xff08;需要复习&#xff09;分析代码 3 54.螺旋矩阵&#xff08;需要复习&#xff09;分析代码 4 48.旋转图像思路代码 5 73.矩阵置零 &#xff08;一遍过&am…

Type-C单口便携显示器LDR6021

Type-C单口便携显示器LDR6021是市场上一种新兴的显示设备&#xff0c;以下是对其的详细介绍&#xff1a; 一、主要特点 便携性&#xff1a;LDR6021采用了Type-C接口作为数据传输和供电接口&#xff0c;这种设计使得它能够与各种支持Type-C接口的设备无缝连接&#xff0c;如笔记…

云途领航:现代应用架构助力企业转型新篇

在数字化转型的浪潮中&#xff0c;现代应用架构为企业带来了灵活性、效率和创新能力。各类服务模型相继出现&#xff0c;为企业提供了强有力的支持&#xff0c;助力其顺利转型。随着技术的快速发展&#xff0c;企业面临的挑战和机遇也在不断演变&#xff0c;这促使它们必须重新…

MyBatis如何处理延迟加载?

大家好&#xff0c;我是锋哥。今天分享关于【MyBatis如何处理延迟加载&#xff1f;】面试题。希望对大家有帮助&#xff1b; MyBatis如何处理延迟加载&#xff1f; 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 MyBatis 支持 延迟加载&#xff08;Lazy Loading&am…

C++--------效率和表示

C 效率和表示 效率 时间效率&#xff1a;在 C 中&#xff0c;不同的数据结构和算法有着各异的时间复杂度。例如&#xff0c;访问数组元素的时间复杂度是 O ( 1 ) O(1) O(1)&#xff0c;而遍历链表查找元素的时间复杂度最坏情况下是 O ( n ) O(n) O(n)。选择合适的算法与数据…

apisix的hmac-auth认证

目录 1、apisix的hmac认证Authorization头信息 2、signature的lua生成源码 3、java生成签证的简单示例 4、postman调用如下 apisix的hmac-auth认证&#xff0c;介绍可以看官方文档 hmac-auth | Apache APISIX -- Cloud-Native API Gateway 照着官方文档&#xff0c;发现生…

Java爬虫实战:深度解析VIP商品详情获取技术

在数字化时代&#xff0c;数据的价值不言而喻。对于电商平台而言&#xff0c;掌握VIP商品的详细信息是提升服务质量、优化用户体验的关键。然而&#xff0c;这些信息往往被复杂的网页结构和反爬虫策略所保护。本文将带你深入了解如何使用Java编写爬虫&#xff0c;以安全、高效地…

Kubernetes 常用的网络插件

上篇内容跟大家简单聊了k8s网络模型原理。分别围绕着容器、Pod、Service、网络策略等展开了详细的讲解。这次想跟大家聊聊k8s的CNI网络插件。 CNI 是 Kubernetes 网络模型的核心组件&#xff0c;它是一个插件接口&#xff0c;允许用户选择和配置网络插件来管理 Pod 的网络。CN…

美国站群服务器如何帮助实现有效的多域名管理?

国站群服务器以其丰富的IP资源、高性能硬件和灵活的配置选项&#xff0c;成为多域名管理的理想选择。特别是在需要针对不同域名实现SEO优化、业务分离或多站点运营的场景中&#xff0c;美国站群服务器提供了高效且实用的解决方案。以下是如何利用美国站群服务器实现有效的多域名…

群晖Cloud Sync一键同步让数据管理变得简单

前言&#xff1a;在这个数字化爆炸的时代&#xff0c;数据管理和备份已经变得不可或缺。无论是个人用户还是企业&#xff0c;都需要一种既高效又可靠的方式来管理和备份分散在各种设备和云存储中的文件。而群晖的 **Cloud Sync** 套件正是为了解决这个问题而生。 Cloud Sync 是…

IntelliJ IDEA Docker集成

一、概述 Docker是一种用于在隔离和可复制环境中部署和运行可执行文件的工具。这可能很有用&#xff0c;例如&#xff0c;在与生产相同的环境中测试代码。 IntelliJ IDEA集成了Docker功能&#xff0c;并为创建Docker映像、运行Docker容器、管理Docker Compose应用程序、使用公…

AES 与 SM4 加密算法:深度解析与对比

&#x1f9d1; 博主简介&#xff1a;CSDN博客专家&#xff0c;历代文学网&#xff08;PC端可以访问&#xff1a;https://literature.sinhy.com/#/literature?__c1000&#xff0c;移动端可微信小程序搜索“历代文学”&#xff09;总架构师&#xff0c;15年工作经验&#xff0c;…

《战神:诸神黄昏》游戏运行时提示mss32.dll丢失怎么办?

《战神&#xff1a;诸神黄昏》游戏运行时提示mss32.dll丢失怎么办&#xff1f; 作为一名软件开发从业者&#xff0c;深知电脑游戏运行时可能会遇到的各种问题&#xff0c;尤其是文件丢失、文件损坏和系统报错等情况。今天&#xff0c;我们就来探讨一下当《战神&#xff1a;诸神…