我使用以下代码解析了一个XML文件,得到的结果如下:
url = htmlTreeParse("http://www.appannie.com/app/ios/candy-crush-saga/", useInternalNodes = T)
ItemList =getNodeSet(url, "//li/a/@title")
>ItemList
[[1]]
title
"Angry Birds Star Wars HD"
attr(,"class")
[1] "XMLAttributeValue"
[[2]]
title
"iShuffle Bowling 2"
attr(,"class")
[1] "XMLAttributeValue"
....
[[15]]
title
"Angry Birds Star Wars Free"
attr(,"class")
[1] "XMLAttributeValue"
attr(,"class")
[1] "XMLNodeSet"
我的问题是我想通过解析来获取游戏的名称。所以我尝试了这段代码(基于我处理xmlValue的经验) -
IL <- lapply(ItemList, function(x) c(xmlValue(x), xmlAttrs(x)[["href"]]))
但最终会出现这个错误:
Error in UseMethod("xmlValue") : no applicable method for 'xmlValue' applied to an object of class "XMLAttributeValue"
我做了大量的谷歌搜索,但找不到处理XMLAttributeValue的解决方案。有人可以给我一个提示,让我知道xmlValue和xmlAttributeValue之间的区别吗?
答案 0 :(得分:3)
感谢您更新了问题并添加了示例网址!
我认为@title
你已经进入属性,这就是你无法解析xmlValue
的原因。那个例如:
> htmlTreeParse("http://www.appannie.com/app/ios/candy-crush-saga/", useInternalNodes = TRUE)
> xpathSApply(url, "//li/a", function(x) c(xmlValue(x), xmlAttrs(x)[["href"]]))
更新:要过滤结果,您可能只会尝试xpathSApply
“客户也购买”div:
> xpathSApply(url, "//div[@class='app_content_section']/ul/li/a", function(x) c(xmlValue(x), xmlAttrs(x)[["href"]]))