2017-09-20 7 views
0

Ich triying die Tabelle der nächsten Webseite zum Download:Wie scrapping diese Website ASP in R?

http://fantasynba.movistarplus.es/basketball/reports/player_rankings.asp

mit dem nächsten Code

rm(list = ls()) 
library(rvest) 
nba <- html("http://fantasynba.movistarplus.es/basketball/reports/player_rankings.asp") 

data_nba<-nba %>% 
    html_nodes("td") %>% 
    html_text() 


df_aux<-matrix(nrow = length(data_nba)/15,ncol=15) 
df_aux<-as.data.frame(df_aux) 
i<-1 
for(i in 1:length(data_nba)/15){ 
    df_aux[i,]<-data_nba[(15*i-14):(15*i)] 
    df_aux[i,1]<-gsub("\r\n\t\t\t\t\r\n\t\t\t","",df_aux[i,1]) 
    df_aux[i,1]<-gsub("\t","",df_aux[i,1]) 
} 
data_nba<-df_aux 


names_nba<-nba %>% 
    html_nodes("thead") %>% 
    html_text() 
names_nba<-gsub(c("\r"),"",names_nba) 
names_nba<-gsub(c("\n"),"",names_nba) 
names_nba<-gsub(c("\t"),"",names_nba) 
names_nba<-strsplit(names_nba," ") 
names_nba<-names_nba[[1]] 
names_nba<-names_nba[which(names_nba!="")] 

names(data_nba)<-names_nba 

Das Problem ist, dass der Code nur die Spieler mit der Position herunterladen (siehe " Posición "auf Spanisch) Base. die anderen Positionen ("Alero", "Pivot") konnte ich nicht herunterladen.

Ich habe alles in meiner Reichweite versucht und ich konnte nicht.

Können Sie mir helfen, es zu beheben?

Vielen Dank im Voraus.

Antwort

0

Vielleicht etw. Akk. wie die folgenden hilft?

result <- list() 

url_base <- "http://fantasynba.movistarplus.es/basketball/reports/player_rankings.asp" 

for (i in 1:3) { 

    nba_session <- html_session("http://fantasynba.movistarplus.es/basketball/reports/player_rankings.asp") 

    form <- html_form(nba_session)[[1]] 

    fillform <- set_values(form, "pos" = i) 
    position_nba <- submit_form(session = nba_session, form = fillform) 

    # returns full table 

    data_nba <- nba_session %>% 
     html_nodes("#searchResults") %>% 
     html_table() %>% 
     .[[1]] 

    result[[i]] <- data_nba 
} 
+0

Danke für die Antwort, aber es geht weiter mit dem Problem. Try this: einzigartig (Ergebnis [[1]] == Ergebnis [[3]]) und einzigartig (Ergebnis [[2]] == Ergebnis [[3]]) Es wird return you TRUE TRUE ... Also, Sie laden die gleiche Tabelle, dreimal. –

+0

sieht so aus, als ob die Schaltfläche "Senden" nicht angeklickt wird, während die anderen Dropdown-Felder ausgefüllt sind. Ich werde sehen, ob ich das beheben kann – TomS

+0

Offenbar hat die Schaltfläche Senden keine "Name" -Attribut, die es mir erlaubt, es aufzurufen. Ich fürchte, ich kann keine bessere Lösung ohne PhantomJS (oder vielleicht RSelenium, die ich noch nicht ausprobiert habe wegen der Nicht-Admin-Rechte auf meinem Rechner). – TomS