2016-06-13 4 views
2

このウェブサイトのフェデラーの結果を含むすべてのhtmlテーブルをお読みください:http://www.atpworldtour.com/en/players/roger-federer/f324/player-activity このデータを単一のデータフレームに格納します。私が把握した1つの方法は、rvestパッケージを使用していましたが、わかりますように、私のコードは特定の回数のトーナメントでのみ動作します。 1つのコマンドで関連するすべてのテーブルを読み取る方法はありますか?ご協力ありがとうございました!テニス選手のアクティビティページからすべての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

上記の解決策は最終的な解決策に近いものでした。あなたのコードの1つの欠点は、forループ内にread_htmlステートメントを持っていたため、処理が大幅に遅くなります。将来、ページを変数に読み込み、必要に応じてノードごとにページノードを処理します。

この解決策では、Webページを変数 "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

関連する問題