Форма отправки без кнопки отправки в rvest

Я пытаюсь написать сканер для загрузки некоторой информации, похожей на это сообщение о переполнении стека. Ответ полезен для создания заполненной формы, но я изо всех сил пытаюсь найти способ отправить форму, когда кнопка отправки не часть формы. Вот пример:

session <- html_session("www.chase.com")
form <- html_form(session)[[3]]

filledform <- set_values(form, `user_name` = user_name, `usr_password` = usr_password)
session <- submit_form(session, filledform)

На этом этапе я получаю эту ошибку:

Error in names(submits)[[1]] : subscript out of bounds

Как я могу отправить эту форму?


person hfisch    schedule 24.11.2015    source источник
comment
Я тоже хотел бы понять, как это сделать.   -  person xav    schedule 16.02.2016


Ответы (1)


Вот грязный прием, который мне подходит: после изучения submit_form исходного кода , я решил, что могу обойти проблему, вставив фальшивую кнопку отправки в мою версию кода формы, а затем функция submit_form вызовет это. Он работает, за исключением того, что выдает предупреждение, в котором часто указывается несоответствующий объект ввода (однако, не в приведенном ниже примере). Однако, несмотря на предупреждение, у меня работает код:

session <- html_session("www.chase.com")
form <- html_form(session)[[3]]

# Form on home page has no submit button,
# so inject a fake submit button or else rvest cannot submit it.
# When I do this, rvest gives a warning "Submitting with '___'", where "___" is
# often an irrelevant field item.
# This warning might be an rvest (version 0.3.2) bug, but the code works.
fake_submit_button <- list(name = NULL,
                           type = "submit",
                           value = NULL,
                           checked = NULL,
                           disabled = NULL,
                           readonly = NULL,
                           required = FALSE)
attr(fake_submit_button, "class") <- "input"
form[["fields"]][["submit"]] <- fake_submit_button

user_name <- "user"
usr_password <- "password"

filledform <- set_values(form, `user_name` = user_name, `usr_password` = usr_password)
session <- submit_form(session, filledform)

При успешном результате отображается следующее предупреждение, которое я просто игнорирую:

> Submitting with 'submit'
person Tripartio    schedule 15.07.2016
comment
Умное решение. Мне было бы интересно узнать, действительно ли предупреждение является ошибкой или это предполагаемое поведение. - person hfisch; 16.08.2016
comment
Я не вижу этого предупреждения в последней версии - person Zafar; 27.11.2017