3

我使用以下代码解析了一个 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 之间的区别吗?

4

1 回答 1

3

感谢更新的问题和添加的示例 URL!

我认为@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"]]))
于 2013-03-08T09:09:19.923 回答