【发布时间】:2020-12-08 13:52:09
【问题描述】:
我想提取<p> 中div 标记“Heading1”和下一个div 标记之间的文本,如下例所示。我不能使用 'heading2 来隔离下一个 div,因为此文本可能会更改。
library(XML)
# create example html
html <- '
<div class="AAA">
<div class="AAA">Heading1</div>
</div>
<p>text1 I want</p>
<p>text2 I want</p>
<p>text3 I want</p>
<div class="AAA">
<div class="AAA">Heading2</div> <!-- Do not always know what this heading is -->
</div>
<p>more text</p>
<p>more text</p>
<p>more text</p>
<div class="AAA">
<div class="AAA">Heading3</div>
</div>'
doc <- htmlParse(html)
xpath <- "//p[preceding::div[@class='AAA' and contains(., 'Heading1')]]"
xpathSApply(doc, xpath, xmlValue)
这工作到这里,但我坚持在下一个 div 限制 xpath。我尝试过使用以下内容,认为它会得到下一个div。
"//p[preceding::div[@class='AAA' and contains(., 'Heading1')]and following::div[position()=1]]"
【问题讨论】: