问题描述
我已修改scrape website with hidden csrf token at login with R中的答案以适合我的需求。
我正在开发一个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,我将创建另一个问题以帮助登录系统。
谢谢。
解决方法
如果字段名称中包含不寻常的字符,只需将名称用引号引起来即可。
form <- set_values(form,"visitor[email]" = email,"visitor[password]" = pass)