2

PHP Web サイトのコンテンツに R でアクセスしたい
http://centralgreen.com.sg/login.php?login=9-1501&password=mypassword

URLにログイン+パスワードの例を渡しましたが、URLからログインボタンを押す方法がわかりません。

可能であれば、R パッケージのRCurlを使用したいと考えています。

4

2 に答える 2

0

最近、私は同じ問題を抱えています。私の場合、RCurlパッケージ(POSTリクエスト付き)を使用して、このように解決しました。

このコードでは、2 つの要求が次々に実行されます。最初のものは、セッション Cookie を取得するためのものです (サーバーでセッションを開始します)。私が呼び出していたアプリケーションは、ログイン資格情報を確認するまでにセッションが開始されることを期待していました (事前にフォームを送信した場合、これは発生しません)。それ以外の場合、Cookie をサポートしていないという警告が発生しました。これは質問者の場合かもしれません (それはかなり前のことですが)... または他の誰かの場合です。

login <- function (xxxx_user, xxxx_pass) {

  url_login <- 'http://centralgreen.com.sg/login.php'

  curlhand <- getCurlHandle()

  curlSetOpt(
     .opts = list(cainfo = system.file("CurlSSL", "cacert.pem", package = "RCurl")),
      cookiefile = "cookies.txt",
      useragent = 'YOUR R-PACKAGE NAME',
      followlocation = TRUE,
      # might need this in case the server checks for the referer..
      httpheader = "Referer: http://centralgreen.com.sg",
      curl = curlhand)

  # (1) first call to initializate session. you get the session cookie
  getURL(url_login, curl = curlhand)

  params<- list( login = xxxx_user, password = xxxx_pass )
  # might need to add some other hidden form param in case there are..

  # (2) second call, sends the form, along with a session cookie
  html = postForm(url_login, 
    .params = params, 
    curl = curlhand, 
    style="POST")

  # ... perform some grep logic with 'html' to find out weather you are connected 
}

# you call the function...
login("yourusername", "yourpass")

「grepロジックを実行する」というメモは、この種のプログラムによるログイン用に設計されていないシステムをターゲットにしているため、試行の結果について適切なヒントを提供しないという事実に対処します...したがって、受信した生の HTML 文字列をいくつかの重要な文に対して解析する必要がある場合があります (例: 「ユーザー名またはパスワードが間違っています」...)

それが役に立てば幸い

于 2013-11-05T18:35:56.170 に答える
0

フォームは郵送で送信されます。現時点では get リクエストを使用しているため、post を使用する必要があります。

私の推測では、rcurl は curl に基づいていると思います。curl がこれを実行できることはわかっているので、可能であるはずです。

于 2011-06-03T07:19:18.797 に答える