2016-09-01 5 views
2

Ich versuche, mich in Yahoo mit R für meine Fantasy-Liga zugreifen. Ich folge Corys Code bei Yahoo login using rvest, aber ohne Erfolg. Wenn ich versuche, die Form ich die folgende Fehlermeldung einreichen:Yahoo Login mit R und rvest

Error: Unknown submission name 'signin'. Possible values: passwd

wenn ich die Variable myform überprüfen ich folgendes bemerkt:

 <button submit> 'signin 

Es gibt keine Schließ Tilde für die Schaltfläche Namen einreichen. Könnte es sein, dass der Einreichungs-Button nicht erkannt wird?

Auch benutze ich immer noch den Benutzernamen/das Passwort anstelle von Benutzernamen/Telefon Prüfmethode.

Kann ich nur eine Einreichung erstellen? Mir ist aufgefallen, dass, wenn ich die "Weiter" -Schaltfläche auf dem Login-Formular drücke, die erste und die zweite Seite gleich sind, versteckt yahoo einfach das Benutzername-Feld. Hier

ist der Code @ Dave2e

library(rvest) 
username <- "xxxx" 
passwd <- "xxxxxx" 
league_id <-"yyyyyyy" 

uastring <- "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.87 Safari/537.36" 
url <- "http://football.fantasysports.yahoo.com/f1/" 
url <- paste0(url, league_id,"/players") 
s <- rvest::html_session(url, httr::user_agent(uastring)) 
myform <- rvest::html_form(s)[[1]] 
myform <- rvest::set_values(myform, username=username) 
# s <- suppressWarnings(rvest::submit_form(s, myform, submit="signin")) 
s <- rvest::submit_form(s, myform, submit="signin") 

Die kommentierte Linie war in @cory ‚s Original-Code.

+0

Warum versuchen Sie nicht Selen-Treiber zu manipulieren klicken Aktionen? – amrrs

+0

Wenn Sie den Code posten, den Sie versuchen, wäre es hilfreich, wenn Sie nicht auf den vorherigen Beitrag zurückkommen. – Dave2e

+0

Antwort auf @amrrs, ich kenne Selen nicht und ich versuche, mich selbst zu unterrichten R. Ich habe gerade meine Fantasy-Football-Liga als ein Element von Interesse ausgewählt, um mir beim Lernen zu helfen. – Pepebuho

Antwort

1

Ich musste den Code seitdem ändern. Ich schätze, yahoo hat den Submit-Button oder was auch immer geändert ... Hier ist, was für mich jetzt funktioniert, mit einem Vorbehalt, manchmal muss ich es zweimal ausführen. Ich weiß nicht warum, aber manchmal, wenn ich es zum ersten Mal benutze, habe ich einen Fehler gemacht, aber beim zweiten Mal funktioniert es.

Auch habe ich es in eine package on github setzen. Sie können es über devtools::install_github("corynissen/yahooFantasySports") installieren. Es gibt nur zwei Funktionen: eine zum Anmelden und die andere zum Herunterladen einer Liste von Fußballspielern für jede Position. Ich habe es für meine Fantasieentwurfsvorbereitungen benutzt.

login <- function(league_id, username){ 
    if(nchar(league_id)!=6){stop("league_id must be six characters")} 
    if(!is.character(username)){stop("username must be a character string")} 

    uastring <- "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.87 Safari/537.36" 
    url <- "http://football.fantasysports.yahoo.com/f1/" 
    url <- paste0(url, league_id) 

    s <- rvest::html_session(url, httr::user_agent(uastring)) 
    myform <- rvest::html_form(s)[[1]] 
    myform <- rvest::set_values(myform, username=username) 
    #s <- suppressWarnings(rvest::submit_form(s, myform, submit="signin")) 
    s <- suppressWarnings(rvest::submit_form(s, myform)) 
    s <- rvest::jump_to(s, s$response$url) 
    myform <- rvest::html_form(s)[[1]] 
    if("code" %in% names(myform$fields)){ 
    code <- readline(prompt="In your Yahoo app, find and click on the Account Key icon.\nGet the 8 character code and\nenter it here: ") 
    }else{ 
    print("Unable to login") 
    return(NULL) 
    } 
    myform <- rvest::set_values(myform, code=code) 
    s <- suppressWarnings(rvest::submit_form(s, myform, submit="verify")) 
    if(grepl("authorize\\/verify", s$url)){ 
    print("Wrong code entered, unable to login") 
    return(NULL) 
    }else{ 
    print("Login successful") 
    } 
    s <- rvest::jump_to(s, s$response$url) 
    return(s) 
} 
+0

Danke! Es hat wie ein Zauber funktioniert. Ich musste meinen Konto-Login ändern, um es vom Telefon aus zu tun. Konnte die Änderungen nie mit Benutzer/Pass-Arbeit machen. Müssen mehr studieren. Außerdem musste ich ein paar Berührungen hinzufügen, um die Player-Datenfunktion zu erhalten. Fügen Sie einfach den Bye-Week-Header hinzu und ändern Sie s_S zu S_PS, um die Projektionen anstelle der Ergebnisse der letzten Saison auszuwählen. – Pepebuho