尝试获取两个 H2 标签之间的所有 P 标签文本


<h2><span>Title1</span></h2>
<p>text I want</p>
<p>text I want</p>
<p>text I want</p>
<p>text I want</p>
<h2>Second Title I want to stop collecting p tags after</h2>

我可以通过识别 h2 中的文本来获取 p 标签,然后获得 preceeding-sibling::p但这会将所有 p 标签抓取到 DOM 的末尾。 我尝试使用"and"选择器来声明开始和结束,但它返回 null。 我一定在这里错过了一些东西,但我已经坚持了很长时间了。 我无法预测我需要多少 p 标签,因此在这种情况下,p 元素上的索引号对我没有帮助。

这是我用来在 h2 之后获取以下所有 p 标签的 xpath。 问题是它将所有 p 标签抓取到 DOM 的末尾。

//span[contains(text(), "Title1")]/ancestor::h2/following-sibling::p
因此,

您只想获取两个特定h2标签之间的所有p标签。 xpath 查询与听起来完全一样。

//p[
   preceding-sibling::h2[span='Title1'] and
   following-sibling::h2[.='Second Title I want to stop collecting p tags after']
]

可以通过选择第一个前面h2元素为起始元素的所有p来简化查询。 换句话说,当前p和标头之间没有其他h2以前的同级。

//p[preceding-sibling::h2[1][span='Title1']]

最新更新