XPathApply-如何从TreeParse获取结果

时间:2018-02-15 02:50:58

标签: r xml

我很难通过XPathApply获取标记来解析信息。网站上的所需信息是一个“输入”单元格,我不知道如何检索它。例如。通过以下信息,我可以提取它:

<div><span>3.2</span></div>
<div><span>6.9</span></div>
<div><span>2.5</span></div>

as.numeric(unlist(xpathApply(*HTMLText*, '//span', xmlValue))

但是,我的行看起来像:

<div class="editable-cell"><input type="text" tabindex="2" value="32"></div>
<div class="editable-cell"><input type="text" tabindex="2" value="33"></div>
<div class="editable-cell"><input type="text" tabindex="2" value="20"></div>

我不知道要使用哪种标记来检索value = "*"中的值。我试过'// value','// div'等等,这对我不起作用。

我提前道歉并没有真正创建可重现的代码,但我认为很容易识别获取值所需的标记。此外,是否有任何资源可以更好地确定我需要哪些标签?

由于

1 个答案:

答案 0 :(得分:1)

您可以使用XML::xmlAttrs来检索属性

library(XML)
doc <- htmlParse('<div class="editable-cell"><input type="text" tabindex="2" value="32"></div>
<div class="editable-cell"><input type="text" tabindex="2" value="33"></div>
<div class="editable-cell"><input type="text" tabindex="2" value="20"></div>')

unlist(lapply(xpathApply(doc, '//input', xmlAttrs), '[[', "value"))

#or
xpathSApply(doc, '//input', function(x) xmlAttrs(x)[["value"]])

#or as suggested by @har07
xpathSApply(doc, '//input/@value', I)