【问题标题】:Read all html tables from tennis players activity page从网球运动员活动页面读取所有 html 表格
【发布时间】:2016-06-13 16:30:49
【问题描述】:

我想从这个网站阅读所有包含费德勒成绩的 html 表格:http://www.atpworldtour.com/en/players/roger-federer/f324/player-activity 并将数据存储在一个数据帧中。我想出的一种方法是使用 rvest 包,但您可能会注意到,我的代码仅适用于特定数量的锦标赛。有什么方法可以用一个命令读取所有相关表吗?感谢您的帮助!

Url <- "http://www.atpworldtour.com/en/players/roger-federer/f324/player-activity"
x<- list(length(4))
for (i in 1:4) {
    results <- Url %>%
    read_html() %>%
    html_nodes(xpath=paste0("//table[@class='mega-table'][", i, "]")) %>%
    html_table()

    results <- results[[1]]
    x[[i]] <- resultados
}

【问题讨论】:

    标签: html r web-scraping rvest


    【解决方案1】:

    您的上述解决方案已接近最终解决方案。您的代码的一个缺点是在 for 循环中有 read_html 语句,这会大大减慢处理速度。将来将页面读入变量,然后根据需要逐个节点处理页面。

    在这个解决方案中,我将网页读入变量“page”,然后提取 class= mega-table 的表节点。在那里,html_table 命令返回了感兴趣的表的列表。 do.call 将一个 rbind 表循环在一起。

    library(rvest)
    url <- "http://www.atpworldtour.com/en/players/roger-federer/f324/player-activity"
    
    page<- read_html(url)
    tablenodes<-html_nodes(page, "table.mega-table")
    tables<-html_table(tablenodes)
    #numoftables<-length(tables)
    
    df<-do.call(rbind, tables)
    

    【讨论】:

      猜你喜欢
      • 2013-12-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-31
      • 2015-07-21
      • 2020-07-30
      • 1970-01-01
      • 2021-07-20
      相关资源
      最近更新 更多