<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>
Run Code Online (Sandbox Code Playgroud)
我可以通过识别h2中的文本获得p标签,然后得到先前的sibling :: p但是这会将所有p标签抓取到DOM的末尾.我试图使用"和"选择器基本上声明一个开始和结束但它返回null.我必须在这里遗漏一些东西,但我已经坚持了很长一段时间.我无法预测我需要多少个p标签,因此在这种情况下,p元素上的索引号对我没有帮助.
这是我用来获取h2之后的所有p标签的xpath.问题是它将所有p标记抓取到DOM的末尾.
//span[contains(text(), "Title1")]/ancestor::h2/following-sibling::p
Run Code Online (Sandbox Code Playgroud)
Jef*_*ado 10
所以你只想获得p两个特定h2标签之间的所有标签.xpath查询与听起来完全一样.
//p[
preceding-sibling::h2[span='Title1'] and
following-sibling::h2[.='Second Title I want to stop collecting p tags after']
]
Run Code Online (Sandbox Code Playgroud)
通过选择p第一个前一个h2元素是起始元素的所有位置,可以简化查询.换句话说,h2当前p和标题之间没有其他先前的兄弟.
//p[preceding-sibling::h2[1][span='Title1']]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2127 次 |
| 最近记录: |