gpt4 book ai didi

r - 在 rvest 中提交没有提交按钮的表单

转载 作者:行者123 更新时间:2023-12-04 10:27:47 27 4
gpt4 key购买 nike

我正在尝试写一个爬虫来下载一些信息,类似于this Stack Overflow post.答案对于创建填写的表单很有用,但是当提交按钮不是表单的一部分时,我正在努力寻找一种提交表单的方法。这是一个例子:

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

我怎样才能让这个表格提交?

最佳答案

这是一个对我有用的肮脏技巧:在研究 submit_form source code 之后,我想我可以通过在表单的代码版本中注入(inject)一个虚假的提交按钮来解决这个问题,然后是 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'

关于r - 在 rvest 中提交没有提交按钮的表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33885629/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com