1

您好,我对 R 很陌生,我正在尝试从网站上抓取一些数据。问题是数据存储不一致。

有时我会看到:

<div class = "text">   The text I want   </div>

其他时候我看到:

<div class = "text"><div class = "text">   The text I want   </div></div>

到目前为止,我正在使用 XML 包和以下 R 代码:

doc = htmlTreeParse(url, useInternalNodes = T)
text = xpathSApply(doc, "//*/div[@class='text']", xmlValue) 

问题是当遇到第二个示例时,此代码将计算“我想要的文本”两次,因为它<div class>两次找到该属性。我只想数一次,因为它只出现一次。

任何指针都非常感谢!

4

2 回答 2

2

如果您只想计算出现次数,那么您应该能够找到所有节点

all_text <- xpathSApply(doc, "//*/div[@class='text']", xmlValue)

和加倍的节点

doubled_text <- xpathSApply(doc, "//*/div[@class='text']/div[@class='text']", xmlValue)

然后从另一个中减去一个的长度以获得真实的反射。

于 2013-01-08T13:58:12.673 回答
2
xtext <- "<div class = \"text\">   The text I want   </div>
</div><div class = \"text\"><div class = \"text\">   The text I want   </div></div>"
doc <- htmlParse(xtext)
xpathSApply(doc,"//*/div[@class='text']/text()")

#[[1]]
#   The text I want    

#[[2]]
#   The text I want    
于 2013-01-08T15:32:17.523 回答