阅读网球运动员活动页面中的所有html表格

时间:2016-06-13 16:30:49

标签: html r web-scraping rvest

我想阅读包含费德勒此网站结果的所有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
}

1 个答案:

答案 0 :(得分:0)

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

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

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)
相关问题