Вход через форму RCurl

Я прочитал следующие вопросы, но не могу понять этот. Пытаюсь авторизоваться на сайте через форму. Пожалуйста, прочитайте ниже:

Рабочий пример:

Загрузка пакетов:

install.packages("RHTMLForms", repos = "http://www.omegahat.org/R", type = "source") require(RHTMLForms) 
require(RCurl) 
require(XML)

Я подключаюсь к https://www.moodys.com/:

 url <- getURL("https://www.moodys.com/", 
               cainfo = system.file("CurlSSL",
               "cacert.pem", package = "RCurl"))

Получение формы входа:

forms <- getHTMLFormDescription(url)

и отправьте форму обратно:

fun <- createFunction(forms$aspnetForm)
results <- fun(MdcUserName = "xxx@xxx", MdcPassword="xxxx")

который дает мне следующее сообщение об ошибке:

Error in function (type, msg, asError = TRUE)  : 
  Could not resolve host: NA; Host not found

Я понимаю, что для воспроизведения/устранения этой ошибки может потребоваться действительное имя пользователя и пароль, но это очень ценно.

Похожие вопросы:

R - отправка формы входа с использованием RCurl

https://stackoverflow.com/questions/19327001/https-php-login-via-rcurl-post

Что, если я хочу парсить с помощью R страницу с параметрами?


person Smackboyg    schedule 19.06.2014    source источник


Ответы (1)


Вы можете использовать Selenium и RSelenium для входа на веб-страницу.

library(RSelenium)
RSelenium::startServer()
appURL <- "http://www.moodys.com"
username <- "someuser"
password <- "somepass"
remDr <- remoteDriver()
remDr$open()
remDr$navigate(appURL)
logIn <- remDr$findElement("id", "LoginText")
logIn$clickElement()
userName <- remDr$findElement("id", "MdcUserName")
userName$sendKeysToElement(list(username))
passWord <- remDr$findElement("id", "MdcPassword")
passWord$sendKeysToElement(list(password))
logIn <- remDr$findElement("id", "LoginImageButton")
logIn$clickElement()
person jdharrison    schedule 19.06.2014
comment
Спасибо, что познакомили меня с RSelenium; хорошо бы разобраться. Я чувствую, что основной причиной моей проблемы может быть ошибка подключения. Запустив предложенный вами код, я застрял на › remDr$open() [1] Подключение к удаленному серверу Ошибка в функции (тип, msg, asError = TRUE): не удалось подключиться к хосту. Вы знаете, как решить эту проблему? SO предлагает посмотреть параметры (RCurlOptions = list (proxy = xxx, proxyport = xx)) но я не знаю, как действовать дальше. заранее спасибо - person Smackboyg; 20.06.2014
comment
Сервер запущен RSelenium::startServer(). Чтобы загрузить сервер, запустите RSelenium::checkForServer(). Ссылка в ответе содержит ряд виньеток, которые также помогут. remDr <- remoteDriver() предполагает, что Firefox установлен. - person jdharrison; 20.06.2014