2016-07-08 24 views
3

Ich versuche Daten von http://www.footballoutsiders.com/stats/snapcounts zu kratzen, aber ich kann die Felder in den Dropdown-Boxen auf der Website nicht ändern ("Team", "Woche" , "Position" und "Jahr"). Mein Versuch, die Tabelle, die mit team = "ALL", week = "1", pos = "All" und year = "2015" mit rvest verbunden ist, zu scrappen, ist unten.Verwenden von r zum Navigieren und scrape eine Webseite mit Dropdown-HTML-Formulare

url <- "http://www.footballoutsiders.com/stats/snapcounts" 
pgsession <- html_session(url) 
pgform <-html_form(pgsession)[[3]] 
filled_form <-set_values(pgform, 
      "team" = "ALL", 
      "week" = "1", 
      "pos" = "ALL", 
      "year" = "2015"    
) 

submit_form(session=pgsession,form=filled_form, POST=url) 

y <- read_html("http://www.footballoutsiders.com/stats/snapcounts") 

y <- y %>% 
    html_nodes("table") %>% 
    .[[2]] %>% 
    html_table(header=TRUE) 

Dieser Code gibt die Tabelle die Standardvariablen in der Dropdown-Box verbunden, die Team = "ALL" sind, Woche = "20", pos = "QB", und year = "2015", die eine Daten Rahmen, der nur 11 Beobachtungen enthält. Wenn es die Felder tatsächlich geändert hätte, hätte es einen Datenrahmen mit 1.695 Beobachtungen zurückgegeben.

+0

Ich habe ein 'y' str (.) Sagt '' data.frame ': \t 11 obs. von 11 Variablen: 'ohne Fehler (und dasselbe, wie ich in meinem Browser sehe). Sie müssen Ihr Problem besser definieren. –

+0

Ich aktualisierte meine Frage, hoffentlich klärt es mein Problem @ 42 – John

Antwort

2

Sie können die Sitzung erzeugt erfassen, wenn das Formular abgeschickt wird und verwenden Sie diese Sitzung als Eingabe für html_nodes:

d <- submit_form(session=pgsession, form=filled_form) 

y <- d %>% 
    html_nodes("table") %>% 
    .[[2]] %>% 
    html_table(header=TRUE) 

dim(y) 
#[1] 1695 11 

Andernfalls, wenn Sie verwenden read_html(url) Sie die Original-Seite lesen.

+0

Vielen Dank !! @ Jota – John