-2

R を使用してhttp://etportfolio.economictimes.indiatimes.com/Login.htmにログインし、作成したポートフォリオ内の保有株式にアクセスしようとしています。「メソッドが許可されていません」というメッセージが表示されるスクリプトは次のとおりです。

library(RJSONIO)
library(rjson)
library(RCurl)

url <- ('http://etportfolio.economictimes.indiatimes.com/Login.htm')

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)


params <- list( 'ru' = "",
            'nru' = "",
            'loginPage' = "login",
            'channel' = "portfolio",
            'scriptTrackingCode' = "",
            'nonscriptTrackingCode' = "",
            'emailid' = "xxxx@hotmail.com",
            'password' = "password")

html1 = postForm(url,.params = params,curl = curl, style = "POST", verbose=TRUE)

httr パッケージを使用しようとすると、ログインは成功しますが、先に進む方法について助けが必要です。これがコードです。

library(httr)
base_url <- ("http://etportfolio.economictimes.indiatimes.com/")

loginURL <- modify_url(
base_url,
path="/loginfrm.htm",
query = list(
title = "loginform",
action = "http://socialappsintegrator.indiatimes.com/socialsite/GenricSSOLogin?",
type = "login",
emailid = "xxx@hotmail.com",
password = "password" ) )
r <- POST(loginURL)

私が間違いを犯しているかどうか、または R を使用して認証できる方法があるかどうかを特定するのを手伝ってもらえますか?

4

1 に答える 1

1

多くの場合、ユースケースによっては、セレンを使用してブラウザーを駆動する方が簡単だと思います。以下は、フォームに入力するためのかなり標準的なスクリプトです。

library(RSelenium)

appURL <- ('http://etportfolio.economictimes.indiatimes.com/Login.htm')
myUser <- "user"
myPass <- "pass"
RSelenium::checkForServer()
RSelenium::startServer()
remDr <- remoteDriver()
remDr$open()
remDr$navigate(appURL)
webElem <- remDr$findElement("id", "emailid")
webElem$sendKeysToElement(list(myUser))
webElem <- remDr$findElement("id", "password")
webElem$sendKeysToElement(list(myPass))
# submit element here rather then click
remDr$findElement('class', 'btn-login')$submitElement()
于 2014-09-11T20:38:48.003 に答える