2016-06-13 46 views
2

我想閱讀所有包含這個網站的費德勒結果的html表格:http://www.atpworldtour.com/en/players/roger-federer/f324/player-activity 並將數據存儲在一個單一的數據框中。我想到的一種方法是使用rvest軟件包,但正如您可能注意到的,我的代碼僅適用於特定數量的錦標賽。有什麼方法可以用一個命令讀取所有相關的表格嗎?感謝您的幫助!閱讀所有來自網球運動員的html表活動頁面

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

您的上述解決方案已接近成爲最終解決方案。你的代碼的一個缺點是在for循環中有read_html語句,這會大大減慢處理速度。將來將頁面讀入變量,然後根據需要逐個節點處理頁面。

在此解決方案中,我將網頁讀入變量「page」,然後提取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) 
+0

歡迎您光臨。如果這是一個可行的解決方案,你可以接受這個答案。 – Dave2e