R — публикация формы входа с использованием RCurl

Я новичок в использовании R для публикации форм, а затем загрузки данных из Интернета. У меня есть вопрос, который, вероятно, очень легко понять, что я делаю неправильно, поэтому я ценю ваше терпение. У меня есть ПК с Win7, и Firefox 23.x — мой типичный браузер.

Я пытаюсь опубликовать основную форму, которая отображается на

http://www.aplia.com/

У меня есть следующий 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 для обработки статистических данных, поэтому я новичок в этих пакетах и ​​функциях.


person SOConnell    schedule 29.09.2013    source источник
comment
Никаких советов по вашей прямой проблеме, но вы уверены, что онлайн-программа для студенческих отчетов не имеет API? А если нет, попросите их получить его. :-)   -  person Ari B. Friedman    schedule 29.09.2013
comment
Да, к сожалению, у них нет API. Видимо я один из первых, кто задает вопросы по этому поводу, ха!   -  person SOConnell    schedule 02.10.2013


Ответы (1)


Ответ оказывается очень простым. По какой-то причине я не увидел ни одной опции, которую нужно включить в postForm:

html = postForm('https://courses.aplia.com/', .params = params, curl = curl, style="POST")

И это все...

person SOConnell    schedule 09.10.2013
comment
Баллы за ответ на свой вопрос. Мне нужно сделать то же самое, и вы сэкономили мне немного времени. - person ctaggart; 08.07.2014
comment
Спасибо! Рад, что это было полезно. - person SOConnell; 09.07.2014