Читать все html-таблицы со страницы активности теннисистов

Я хотел бы прочитать все 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
}

person lucasm    schedule 13.06.2016    source источник


Ответы (1)


Ваше решение выше было близко к окончательному решению. Одним из недостатков вашего кода было наличие инструкции read_html внутри цикла for, это сильно замедлило бы обработку. В будущем прочитайте страницу в переменную, а затем обработайте страницу узел за узлом по мере необходимости.

В этом решении я прочитал веб-страницу в переменной «страница», а затем извлек узлы таблицы, где 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)
person Dave2e    schedule 14.06.2016