gpt4 book ai didi

r - 使用R和XML,XPath 1.0表达式可以消除返回的内容中的重复项吗?

转载 作者:行者123 更新时间:2023-12-03 17:03:53 25 4
gpt4 key购买 nike

当我使用XPath 1.0从以下URL中提取内容时,返回的城市包含重复的城市,从伯明​​翰开始。 (返回的完整值超过140个,因此我已将其截断了。)XPath表达式是否有办法避免重复?

require(XML)
doc <- htmlTreeParse("http://www.littler.com/locations", useInternal = TRUE)
xpathSApply(doc, "//div[@class = 'mm-location-usa']//a[position() < 12]", xmlValue, trim = TRUE)

[1] "Birmingham" "Mobile" "Anchorage" "Phoenix" "Fayetteville" "Fresno"
[7] "Irvine" "L.A. - Century City" "L.A. - Downtown" "Sacramento" "San Diego" "Birmingham"
[13] "Mobile" "Anchorage" "Phoenix" "Fayetteville" "Fresno" "Irvine"
[19] "L.A. - Century City" "L.A. - Downtown" "Sacramento" "San Diego"


是否有XPath表达式或按照[not-duplicate()]的方法解决?

同样,各种[position()
我将不胜感激任何指导或发现我能做的最好的就是限制返回的重复项的数量。

BTW XPath result with duplicates不是同一个问题,也不是与重复节点有关的问题,例如 How do I identify duplicate nodes in XPath 1.0 using an XPathNavigator to evaluate?

最佳答案

为此,有一个函数称为distinct-values(),但不幸的是,它仅在XPath 2.0中可用。在R中,您限于XPath 1.0。

你能做的是

//div[@class = 'mm-location-usa']//a[position() < 12 and not(normalize-space(.) = normalize-space(following::a))]


用普通的英语做什么:


查找 div元素,但仅当其 class属性值等于“ mm-location-usa”时。寻找那些 a元素的后代 div元素,但仅当 a元素的位置小于12并且该 a元素的规范化文本内容不等于 后面的元素。


但这是一种计算密集型方法,而不是最优雅的方法。我建议您采取jlhoward的解决方案。

关于r - 使用R和XML,XPath 1.0表达式可以消除返回的内容中的重复项吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26959994/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com