Отправить форму без кнопки отправки в 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
Как я могу отправить эту форму?
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'