使用部分匹配解析R中的HTML

使用部分匹配解析R中的HTML,html,r,xml,web-scraping,Html,R,Xml,Web Scraping,我需要解析以下HTML文档: <span class="revision-gradient shadowed">90</span> <span class="revision-gradient not_shadowed">75</span> <span class="revision-gradient shadowed">85</span> <span class="revision-gradient blurred"

我需要解析以下HTML文档:

<span class="revision-gradient shadowed">90</span>
<span class="revision-gradient not_shadowed">75</span>
<span class="revision-gradient shadowed">85</span>
<span class="revision-gradient blurred">60</span>
我通常会使用此代码,但我不确定如何解析部分匹配:

document <- htmlParse(url)
myList <- unlist(lapply(document['//span[@class="revision-gradient"]'],xmlValue))

document您可以使用
XML::xpathsaply

myList <- xpathSApply(document, "//span", xmlValue)

myList您可以使用
XML::xpathsaply

myList <- xpathSApply(document, "//span", xmlValue)
myList
如果您被困在
XML
-land中:

library(XML)

doc <- htmlParse('
<span class="revision-gradient shadowed">90</span>
<span class="revision-gradient not_shadowed">75</span>
<span class="revision-gradient shadowed">85</span>
<span class="revision-gradient blurred">60</span>
')

xpathSApply(doc, "//descendant-or-self::span[@class and 
            contains(concat(' ', normalize-space(@class), ' '), 
            ' revision-gradient ')]", xmlValue)
库(XML)
医生
如果您被困在
XML
-land中:

library(XML)

doc <- htmlParse('
<span class="revision-gradient shadowed">90</span>
<span class="revision-gradient not_shadowed">75</span>
<span class="revision-gradient shadowed">85</span>
<span class="revision-gradient blurred">60</span>
')

xpathSApply(doc, "//descendant-or-self::span[@class and 
            contains(concat(' ', normalize-space(@class), ' '), 
            ' revision-gradient ')]", xmlValue)
库(XML)

doc这些是XML文档中唯一的元素,还是需要忽略其他标记?有5个或6个变体。一吨也没有,所以最坏的情况是建立一个不同组合的列表是可行的。你感兴趣的变化是固定的还是也不同?它们是固定的。它需要一次通过还是可以容忍多次通过?如果您感兴趣的集合是固定的,那么为什么不对查找进行硬编码,以仅捕获精确匹配,而不是担心部分匹配?我只是在想,如果模式发生变化,并且您开始接受不需要的数据,会发生什么情况。别误会,我喜欢这个问题,我只是从实用的角度思考。我也对最好的答案感到好奇。我总是对通过过滤器泄漏的坏数据保持警惕。这些是XML文档中唯一的元素还是需要忽略的附加标记?有5个或6个变体。一吨也没有,所以最坏的情况是建立一个不同组合的列表是可行的。你感兴趣的变化是固定的还是也不同?它们是固定的。它需要一次通过还是可以容忍多次通过?如果您感兴趣的集合是固定的,那么为什么不对查找进行硬编码,以仅捕获精确匹配,而不是担心部分匹配?我只是在想,如果模式发生变化,并且您开始接受不需要的数据,会发生什么情况。别误会,我喜欢这个问题,我只是从实用的角度思考。我也对最好的答案感到好奇。我总是对通过过滤器泄漏的坏数据保持警惕。
html_nodes(pg, xpath=".//descendant-or-self::span[@class and 
           contains(concat(' ', normalize-space(@class), ' '), 
           ' revision-gradient ')]") %>% 
  html_text()
library(XML)

doc <- htmlParse('
<span class="revision-gradient shadowed">90</span>
<span class="revision-gradient not_shadowed">75</span>
<span class="revision-gradient shadowed">85</span>
<span class="revision-gradient blurred">60</span>
')

xpathSApply(doc, "//descendant-or-self::span[@class and 
            contains(concat(' ', normalize-space(@class), ' '), 
            ' revision-gradient ')]", xmlValue)