我正在使用R屏幕刮擦。我抓住了一个页面,我已经设法找到页面上某个位置找到的所有链接(使用name属性的锚标签中的锚标签):
links <- xpathSApply(doc, "//a[@name]//a/@href")
现在我抓住了从Curl链接获取的文件,我想要刮掉一定数量的文本。文本似乎始终位于<p>
标记之间(尽管文本中有其他<p>
标记,但在以下文字之前结束
</pre><hr>Back to: <a href="#TOP">
我决定抓住<p>
和<a href="#TOP">
之间的所有文字,我似乎无法确定xpath查询。到目前为止我有:
text <- xpathSApply(doc, '"/ //text()[preceding:://a/@href="#TOP"] and following::*//p')
有人能指出我正确的方向吗? stackoverflow上有相当多的xpath答案,但它们并不总能解释为了我自己的使用而难以编辑它们的答案。
示例HTML:
<span ID="MSGHDR-CONTENT-TYPE-H-PRE">Content-type:</b></span> <span ID="MSGHDR-CONTENT- TYPE-PRE">text/plain; charset=us-ascii</span>
</span><p>
lots and lots of text here that I want
</pre><hr>Back to: <a href="#TOP">Top of message</a> | <a href="/cgi-bin/wa?A1=ind9709&L=cybcom&D=0">Previous page</a> | <a href="/cgi-bin/wa?A0=cybcom&D=0">Main CYBCOM page</a><p>
答案 0 :(得分:0)
HTML格式很糟糕,因此我很难弄清楚在解析成节点树时格式正确的实例会是什么样子。
以下内容可能有效。它假定在<p>
内声明的所有<pre>
元素都是它的子元素(即使HTML中没有关闭)。
它会查找text()
的{{1}}孩子<p>
没有孩子<p>
,并且是<pre>
的后代,其中包含以下内容兄弟姐妹第一个<a>
的href值为“#TOP”。
//body/pre[following-sibling::a[position()=1 and @href='#TOP']]//p[not(p)]/text()