Отправить форму без кнопки отправки в 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'
Другие вопросы по тегам