xpath之根据节点获取兄弟节点

本文介绍XPath中利用父节点、前导和后续兄弟节点进行元素定位的方法,包括如何通过父节点定位目标元素,及使用preceding-sibling和following-sibling属性进行跨列定位。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

思路
(1)可以通过获取的节点,定位到父节点,再找到想要定位 的元素 用到 . .来获取 父节点
(2)可以使用xpath提供的属性:preceding-sibling(当前节点之前的节点)或者following-sibling(当前节点之后的节点)属性来进行定位
用法
根据第一个td中的40140值想要获取到第二个td中123在这里插入图片描述
(1)通过父节点进行定位
//table/tbody/tr[1]/td[1]/div/…/…/td[2]/div ###先获取到了40140值,在通过…获取到了父值td,再获取td的父值tr,再进行获取子节点
(2)使用preceding-following
//*[@id=“app”]/div/div[2]/div[2]/div[2]/div[4]/div[2]/table/tbody/tr[1]/td[4]/preceding-sibling::td[1]
通过第4列定位到第3列,其中preceding-sibling::td[1]这个索引值是可变的,越向上索引越大在这里插入图片描述
(3)使用following-sibling
通过第1列定位到第2列,其中following-sibling::td[1]这个索引值是可变的,越向下索引越大在这里插入图片描述

### XPath 中选择前一个兄弟节点的方法 在 XPath 查询中,`preceding-sibling` 轴用于选取当前节点之前的所有兄弟节点。如果只想获取紧邻之前的那个兄弟节点,则可以通过索引 `[1]` 来限定。 对于给定的 HTML 结构: ```html <div> <a id="1" href="www.baidu.com">1</a> <p>我是p标签</p> <a id="2" href="www.baidu.com">2</a> <a id="3" href="www.baidu.com">3</a> <a id="4" href="www.baidu.com">4</a> <p>我是p标签</p> <a id="5" href="www.baidu.com">5</a> </div> ``` 要找到 `id="3"` 的 `<a>` 标签前面的那个兄弟节点(即第二个 `<a>`),可以使用如下 XPath 表达式[^4]: ```python tree.xpath('//a[@id="3"]/preceding-sibling::*[1]') ``` 此表达式的含义是从文档树中寻找具有特定条件 (`@id="3"`) 的 `<a>` 元素,并返回该元素直接前置的一个任意类型的兄弟节点。这里使用了通配符 `*` 来表示任何类型的元素;而 `[1]` 则限定了只取第一个匹配的结果,也就是最近的那个前序兄弟节点。 为了更精确地控制所选节点类型,在实际应用时可以根据需求替换掉通配符 `*`: - 如果知道确切的目标标签名,可以直接指定它; - 或者加入其他谓词进一步过滤符合条件的对象集合。 例如,仅当目标是一个段落标记 `<p>` 时,可修改查询语句为: ```python tree.xpath('//a[@id="3"]/preceding-sibling::p[1]') ``` 这会确保即使存在多个不同种类的兄弟节点也只会选出距离最近且满足条件的那一项。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值