【问题标题】:R - How to extract items from XML Nodeset?R - 如何从 XML 节点集中提取项目?
【发布时间】:2017-04-24 22:02:26
【问题描述】:

我有一个包含 438 个投手名称的列表,看起来像这样(在 XML 节点集中):

> pitcherlinks[[1]]
<td class="left " data-append-csv="abadfe01" data-stat="player" csk="Abad,Fernando0.01">
  <a href="/players/a/abadfe01.shtml">Fernando Abad</a>*
</td> 

> pitcherlinks[[2]]
<td class="left " data-append-csv="adlemti01" data-stat="player" csk="Adleman,Tim0.01">
  <a href="/players/a/adlemti01.shtml">Tim Adleman</a>
</td> 

如何提取Fernando Abad 之类的名称以及/players/a/abadfe01.shtml 之类的关联链接

【问题讨论】:

    标签: html r xml web-scraping nodes


    【解决方案1】:

    由于您有一个列表,因此可以使用一个 apply 函数来遍历该列表。每个函数使用read_html 解析列表中的hmtl 片段,使用CSS 选择器a 来查找锚点(链接)。名称来自html_text,链接在属性href

    library(rvest)
    pitcherlinks <- list()
    pitcherlinks[[1]] <- 
    '<td class="left " data-append-csv="abadfe01" data-stat="player" csk="Abad,Fernando0.01">
      <a href="/players/a/abadfe01.shtml">Fernando Abad</a>*
        </td>'
    
    pitcherlinks[[2]] <- 
      '<td class="left " data-append-csv="adlemti01" data-stat="player" csk="Adleman,Tim0.01">
        <a href="/players/a/adlemti01.shtml">Tim Adleman</a>
          </td>'
    
    names <- sapply(pitcherlinks, function(x) {x %>% read_html() %>% html_nodes("a") %>% html_text()})
    links <- sapply(pitcherlinks, function(x) {x %>% read_html() %>% html_nodes("a") %>% html_attr("href")})
    
    names
    # [1] "Fernando Abad" "Tim Adleman"  
    links
    # [1] "/players/a/abadfe01.shtml"  "/players/a/adlemti01.shtml"
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-19
      • 1970-01-01
      相关资源
      最近更新 更多