2016-09-01 2 views
2

Я пытаюсь войти в Yahoo, используя R, чтобы получить доступ к моей лиге фэнтези. Я слежу за кодом Кори в Yahoo login using rvest, но безуспешно. Когда я пытаюсь отправить форму, я получаю следующее сообщение об ошибке:Yahoo с помощью R и rvest

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

когда я проверяю переменный MyForm я заметил следующее:

 <button submit> 'signin 

Там нет закрытия тильды для имени кнопки отправки. Может ли быть причиной того, что кнопка отправки не распознана?

Кроме того, я по-прежнему использую имя пользователя/пароль вместо метода проверки имени пользователя/телефона.

Могу ли я сделать только одно представление? Я заметил, что всякий раз, когда я нажимаю кнопку «Далее» в форме входа, первая и вторая страницы одинаковы, yahoo просто скрывает поле имени пользователя.

Вот код @ 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") 

Закомментированный линия в исходном коде @cory «s.

+0

Почему вы не пытаетесь использовать драйвер селена для управления действиями кликов? – amrrs

+0

Если вы публикуете код, который вы пытаетесь, было бы полезно в отличие от обращения к предыдущему сообщению. – Dave2e

+0

Отвечая на @amrrs, я не знаю селена, и я пытаюсь научить себя Р. Я только что выбрал свою фэнтезийную футбольную лигу как предмет, способный помочь мне учиться. – Pepebuho

ответ

1

Мне пришлось сменить код с тех пор. Я предполагаю, что yahoo изменил кнопку отправки или что-то еще ... Вот что работает для меня сейчас, с одной оговоркой, иногда мне приходится запускать ее дважды. Я не знаю почему, но иногда в первый раз, когда я запускаю его, я попал в сообщение об ошибке, но во второй раз он работает.

Кроме того, я положил его в package on github. Вы можете установить его через devtools::install_github("corynissen/yahooFantasySports"). Там есть только две функции: один для входа, а другой для загрузки списка футболистов для каждой позиции. Я использовал его для своих проектов подготовки к фантазии.

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

Спасибо! Оно работало завораживающе. Мне пришлось изменить свой логин для входа, чтобы сделать это с телефона. Не удалось внести изменения, используя работу пользователя/прохода. Необходимо учиться больше. Также мне пришлось добавить пару штрихов к функции получения данных игрока. Просто добавьте заголовок предыдущей недели и измените s_S на S_PS, чтобы он выбрал прогнозы, а не результаты прошлого сезона. – Pepebuho

 Смежные вопросы

  • Нет связанных вопросов^_^