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