Chcę pobrać niektóre dane ze strony Pro Football Reference za pomocą pakietu rvest
. Najpierw chwycić wyniki wszystkich rozegranych w 2015 roku z tym adresem http://www.pro-football-reference.com/years/2015/games.htm
Jak uzyskać tabelę za pomocą rvest()
library("rvest")
library("dplyr")
#grab table info
url <- "http://www.pro-football-reference.com/years/2015/games.htm"
urlHtml <- url %>% read_html()
dat <- urlHtml %>% html_table(header=TRUE) %>% .[[1]] %>% as_data_frame()
Czy to w jaki sposób to zrobić? :)
dat
może być trochę posprzątany. Dwie zmienne wydają się mieć puste pola dla nazw. Plus wiersz nagłówka jest powtarzany między każdym tygodniem.
colnames(dat) <- c("week", "day", "date", "winner", "at", "loser",
"box", "ptsW", "ptsL", "ydsW", "toW", "ydsL", "toL")
dat2 <- dat %>% filter(!(box == ""))
head(dat2)
Wygląda dobrze!
Teraz spójrzmy na indywidualną grę. Na stronie powyżej kliknij "Boxscore" w pierwszym rzędzie tabeli: 10 września rozgrywana pomiędzy Nową Anglią a Pittsburghiem. To zabiera nas tutaj: http://www.pro-football-reference.com/boxscores/201509100nwe.htm
.
Chcę pobrać poszczególne liczby dla każdego gracza (około połowy strony). Na pewno będą to nasze pierwsze dwie linie kodu:
gameUrl <- "http://www.pro-football-reference.com/boxscores/201509100nwe.htm"
gameHtml <- gameUrl %>% read_html()
Ale teraz nie mogę wymyślić, jak pobrać konkretny stół, który chcę. Używam gadżetu Selector, aby podświetlić tabelę snapów Patriots. Robię to, klikając stół w kilku miejscach, a następnie "usuwając" pozostałe podświetlone tabele. I skończyć z ścieżce:
#home_snap_counts .right , #home_snap_counts .left, #home_snap_counts .left, #home_snap_counts .tooltip, #home_snap_counts .left
Każda z tych prób zwraca {xml_nodeset (0)}
gameHtml %>% html_nodes("#home_snap_counts .right , #home_snap_counts .left, #home_snap_counts .left, #home_snap_counts .tooltip, #home_snap_counts .left")
gameHtml %>% html_nodes("#home_snap_counts .right , #home_snap_counts .left")
gameHtml %>% html_nodes("#home_snap_counts .right")
gameHtml %>% html_nodes("#home_snap_counts")
Może spróbujmy użyciu xpath
. Wszystkie te próby również zwrócą się, w celu odzyskania tej tabeli? Zwrócę też uwagę, że kiedy robię "Wyświetl źródło strony" w Google Chrome, wydaje mi się, że tabele, które chcę, są komentowane? Oznacza to, że są wpisane na zielono zamiast zwykłego schematu kolorów czerwonego/czarnego/niebieskiego. Tak nie jest w przypadku wyników tabeli wyników, które wyciągnęliśmy jako pierwsze. "Wyświetl źródło strony" dla tego stołu to zwykle schemat kolorów czerwony/czarny/niebieski. Czy zieloność wskazuje na to, co uniemożliwia mi chwytanie tego stołu zliczającego?
Dzięki!
'url <- "http://www.pro-football-reference.com/boxscores/201509100nwe.htm#all_vis_snap_counts" przystawki.count <- url %>% read_html()%>% html_nodes (xpath = '// * [zawiera (concat ("", @ klasa, ""), concat ("", "table_container", ""))]) 'który zwraca element (np.' '{xml_nodeset (1)}' ') listę, ale nie mogę przekonwertować go do tabeli za pomocą' 'html_table (fill = TRUE)' ' –
' 'http: // www .pro-football-reference.com/boxscores/201509100nwe.htm '%>% read_html()%>% html_nodes (xpath =' // komentarz() ')%>% html_text()%>% paste (collapse =' ')%>% read_html()%>% html_node (' table # home_snap_counts ')%>% html_table()%>% {setNames (. [- 1,], paste0 (nazwy (.),. [1,]))}%>% readr :: type_convert() ' – alistaire