您好我是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>
属性。我只想算一次因为它只出现一次。
非常感谢任何指针!
答案 0 :(得分:2)
如果您只想计算出现次数,那么您应该能够找到所有节点
all_text <- xpathSApply(doc, "//*/div[@class='text']", xmlValue)
和加倍节点
doubled_text <- xpathSApply(doc, "//*/div[@class='text']/div[@class='text']", xmlValue)
然后从另一个中减去一个的长度以获得真实的反射。
答案 1 :(得分: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