following-sibling轴用于选择当前节点之后同父级的所有同级节点,其定位精准且仅限于兄弟节点范围内,不会涉及父级、子级或其他无关部分;与following轴不同,following-sibling仅在同级节点中向后查找,而following轴则全局查找文档中所有后续节点,范围更广;通过结合节点名称、位置、属性、文本内容及谓词条件,可实现对特定后续同级节点的精确筛选;在实际网页抓取中,虽面临结构不稳定、动态加载、同级节点混淆、性能开销及不规范html等挑战,但可通过稳定锚点、等待机制、上下文分析和组合定位等策略有效应对,从而构建可靠高效的xpath定位方案。

XPath的
following-sibling
following-sibling
following-sibling
其基本语法是:
当前节点/following-sibling::节点测试
div
p
*
举个例子,如果你有一个HTML结构:
<div class="container"> <p>第一个段落</p> <span>一个跨度</span> <p>第二个段落</p> <div>一个区块</div> <p>第三个段落</p> </div>
如果你当前定位在
<span>一个跨度</span>
./following-sibling::*
第二个段落
<p>
一个区块
<div>
第三个段落
<p>
这个轴的强大之处在于它的“同级”限定。它不会跳到父节点的其他子节点,也不会深入到任何兄弟节点的内部去寻找后代。这种精确性在处理列表、表格或者任何有明确顺序的同级元素时显得尤为重要。
following-sibling
following
这确实是一个常让人混淆的点,因为名字听起来很像,但它们的功能范围却大相径庭。简单来说,
following-sibling
following
following-sibling
而
following
举个例子,假设有这样的HTML片段:
<div id="section1"> <p>P1</p> <span>S1</span> <p>P2</p> </div> <div id="section2"> <p>P3</p> <span>S2</span> </div>
如果你当前定位在
<span>S1</span>
./following-sibling::*
<p>P2</p>
S1
S1
./following::*
<p>P2</p>
<div id="section2">
<p>P3</p>
<span>S2</span>
S1
所以,当你明确知道目标元素就在当前元素的旁边,且是同级时,
following-sibling
following
仅仅使用
following-sibling::*
[]
按节点名称筛选: 这是最常见的用法。如果你知道你想要的后续同级节点是什么类型的元素,直接指定它的标签名。 例如:
./following-sibling::p
<p>
./following-sibling::div
<div>
按位置筛选: 当你需要选择第N个后续同级节点时,可以使用
[position()]
./following-sibling::p[1]
<p>
./following-sibling::*[last()]
./following-sibling::*[position() > 1 and position() < 4]
按属性筛选: 如果后续同级节点有特定的属性,你可以用
[@attribute='value']
./following-sibling::div[@class='info']
<div>
class
info
./following-sibling::p[contains(@id, 'summary')]
<p>
id
summary
按文本内容筛选: 你也可以根据同级节点的文本内容进行筛选,这在某些场景下非常有用。 例如:
./following-sibling::span[contains(text(), '重要信息')]
<span>
./following-sibling::h2[normalize-space(.) = '产品详情']
<h2>
组合筛选条件: 这些条件可以组合使用,以实现更复杂的定位。 例如:
./following-sibling::p[@class='item' and position() = 2]
<p>
class
item
通过这些谓词的灵活运用,
following-sibling
following-sibling
尽管
following-sibling
网页结构的不稳定性: 这是最常见的挑战。很多网站,特别是那些频繁更新或由内容管理系统驱动的网站,其HTML结构可能会在不经意间发生变化。一个原本位于特定元素之后的兄弟节点,可能因为新元素的插入、旧元素的移除,或者只是顺序的调整,导致你依赖的
following-sibling
following-sibling
./*
./div[2]
动态加载内容: 现代网页大量使用JavaScript进行内容渲染和异步加载。你期望通过
following-sibling
WebDriverWait
混淆的同级节点: 有时,一个元素后面可能会跟着很多同类型但语义不同的同级节点,或者这些节点之间没有明显的属性或文本差异来区分。例如,一系列没有独特class或id的
<div>
<span>
[contains(., '关键字')]
[not(@class)]
性能考虑: 在非常庞大和复杂的HTML文档中,如果
following-sibling
div
div
div
following-sibling
不规范的HTML结构: 某些网站的HTML可能不完全符合标准,或者存在一些结构上的“怪癖”。例如,本应是兄弟关系的元素,由于开发者疏忽,可能被错误地嵌套在另一个不相关的元素内部,导致
following-sibling
following::
总的来说,
following-sibling
以上就是XPath的following-sibling轴如何选择同级?的详细内容,更多请关注php中文网其它相关文章!
Windows激活工具是正版认证的激活工具,永久激活,一键解决windows许可证即将过期。可激活win7系统、win8.1系统、win10系统、win11系统。下载后先看完视频激活教程,再进行操作,100%激活成功。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号