我想在亚马逊客户评论中获得从1到5的费率。 我查看了源代码,发现这部分看起来像
<div style="margin-bottom:0.5em;">
<span style="margin-right:5px;"><span class="swSprite s_star_5_0 " title="5.0 out of 5 stars" ><span>5.0 out of 5 stars</span></span> </span>
<span style="vertical-align:middle;"><b>Works great right out of the box with Surface Pro</b>, <nobr>October 5, 2013</nobr></span>
</div>
我希望从
中获得5.0星<span>5.0 out of 5 stars</span></span> </span>
我如何使用xpathSApply来获取它?
谢谢!
答案 0 :(得分:7)
我建议使用selectr
包,它使用css选择器代替xpath。
library(XML)
doc <- htmlParse('
<div style="margin-bottom:0.5em;">
<span style="margin-right:5px;">
<span class="swSprite s_star_5_0 " title="5.0 out of 5 stars" >
<span>5.0 out of 5 stars</span></span> </span>
<span style="vertical-align:middle;">
<b>Works great right out of the box with Surface Pro</b>,
<nobr>October 5, 2013</nobr></span>
</div>', asText = TRUE
)
library(selectr)
xmlValue(querySelector(doc, 'div > span > span > span'))
更新:如果您要使用xpath
,可以使用css_to_xpath
中的selectr
函数找出相应的xpath命令,在这种情况下,该命令结果为< / p>
"descendant-or-self::div/span/span/span"
答案 1 :(得分:1)
我不知道r,但我可以给你XPath字符串。看来你想要第一个没有属性的跨度文本,这就是:
//span[not(@*)][1]/text()
您可以将此字符串放入xpathSApply。