r语言 - 如何从 <span> HTML </span> 和 之间的数据



我想在亚马逊客户评论中获得从 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 星(满分 5 星)中得到

<span>5.0 out of 5 stars</span></span> </span>

我如何使用 xpathSApply 来获取它?

谢谢!

我建议使用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 ,您可以使用 selectr 中的 css_to_xpath 函数来找出合适的 xpath 命令,在这种情况下,结果是

"descendant-or-self::div/span/span/span"

我知道的不多,但我可以给你 XPath 字符串。似乎您想要第一个跨度的文本,该文本没有属性,这将是:

//span[not(@*)][1]/text()

你可以把这个字符串放到 xpathSApply 中。

最新更新