我是使用 R 发布表单然后从网上下载数据的新手。我有一个问题可能很容易让外面的人发现我做错了什么,所以我感谢你的耐心。我有一台 Win7 PC 和 Firefox 23.x 是我的典型浏览器。
我正在尝试发布显示在
我有以下 R 脚本:
your.username <- 'username'
your.password <- 'password'
setwd( "C:/Users/Desktop/Aplia/data" )
require(SAScii)
require(RCurl)
require(XML)
agent="Firefox/23.0"
options(RCurlOptions = list(cainfo = system.file("CurlSSL", "cacert.pem", package = "RCurl")))
curl = getCurlHandle()
curlSetOpt(
cookiejar = 'cookies.txt' ,
useragent = agent,
followlocation = TRUE ,
autoreferer = TRUE ,
curl = curl
)
# list parameters to pass to the website (pulled from the source html)
params <-
list(
'userAgent' = agent,
'screenWidth' = "",
'screenHeight' = "",
'flashMajor' = "",
'flashMinor' = "",
'flashBuild' = "",
'flashPatch' = "",
'redirect' = "",
'referrer' = "http://www.aplia.com",
'txtEmail' = your.username,
'txtPassword' = your.password
)
# logs into the form
html = postForm('https://courses.aplia.com/', .params = params, curl = curl)
html
# download a file once form is posted
html <-
getURL(
"http://courses.aplia.com/af/servlet/mngstudents?ctx=filename" ,
curl = curl
)
html
但是从那里我可以看出我没有得到我想要的页面,因为返回到 html 的是一个重定向消息,似乎要求我再次登录(?):
"\r\n\r\n<html>\r\n<head>\r\n <title>Aplia</title>\r\n\t<script language=\"JavaScript\" type=\"text/javascript\">\r\n\r\n top.location.href = \"https://courses.aplia.com/af/servlet/login?action=form&redirect=%2Fservlet%2Fmngstudents%3Fctx%3Dfilename\";\r\n \r\n\t</script>\r\n</head>\r\n<body>\r\n Click <a href=\"https://courses.aplia.com/af/servlet/login?action=form&redirect=%2Fservlet%2Fmngstudents%3Fctx%3Dfilename\">here</a> to continue.\r\n</body>\r\n</html>\r\n"
尽管我确实相信一旦成功发布表单(手动,在浏览器中),就会发生一系列重定向。我怎样才能知道表格已正确张贴?
我很确定,一旦我可以让帖子正常工作,我不会有任何问题指示 R 下载我需要的文件(本学期我的 500 名学生中的每一个的在线活动报告)。但是花了几个小时为此工作并陷入困境。也许我需要使用 RCurl 包设置更多与 cookie 有关的选项(因为该站点确实使用 cookie)---?
非常感谢任何帮助!我通常使用 R 来处理统计数据,所以对这些包和函数很陌生。