首页 > 解决方案 > R - 表单输入电子邮件和密码在字段名称中有括号

问题描述

我已经在使用 R 登录时使用隐藏的 csrf 令牌修改了抓取网站的答案,以满足我的需求。

我正在开发一个 R 包,它将自动为注册用户登录到 UNICEF MICS 调查数据集的过程。我在输入表单接受我的用户名和密码时遇到问题。请参阅下面的代码和错误消息。

library("rvest")
library("RCurl")
library("XML")

my.base.uri <- "https://mics.unicef.org"
my.uri <- paste0(my.base.uri, "/visitors/sign-in")

session <- html_session(my.uri)

email <- ""
pass <- ""

# Handling the html_form
form <- html_form(session)[[1]]
form <- set_values(form, email = email, password = pass)
form2 <- set_values(form, visitor.email = email, visitor.password = pass)

# The same error message applies to both attempts using form and form2
# Error: Unknown field names: email, password

<form> 'new_visitor' (POST /visitors/sign-in)
  <input hidden> 'utf8': ✓
  <input hidden> 'authenticity_token': czKvZKYPQnx6CuJR1/R+g904zI3IDGskP1griNl8MIE=
  <input email> 'visitor[email]':
  <input password> 'visitor[password]':
  <textarea> 'g-recaptcha-response' [0 char]
  <input submit> 'commit': Log in

由于表单字段有括号,因此使用预期输入指定表单字段的最佳方法是什么。

我将创建另一个问题以帮助登录系统以解决 Google ReCaptcha。

谢谢你。

标签: rauthenticationrvest

解决方案


如果字段名称中有不寻常的字符,只需将名称括在引号中即可。

form <- set_values(form, "visitor[email]" = email, "visitor[password]" = pass)

推荐阅读