2016-03-18 7 views
1

私はアクセスしようとしているプラ​​イベートWebサーバー上にファイルを持っています。私はまずサイトに行き、自分の資格情報でログインしなければなりません。次に、ファイルにアクセスするためのURL(リンクはありません)を入力すると、すぐにcsvファイルがコンピュータにダウンロードされます。私はそのcsvファイルをオンラインから直接ダウンロードするか、ハードドライブから自動的にダウンロードしてアップロードするようにしていますウェブでCSVをデータフレームにロック

私はこのデータを毎日10〜15回リフレッシュする予定です。手動で毎回ダウンロードするのではなく、自動で行う必要があります。

私はいくつかのパッケージを試してきましたが、過去に使用したことよりはるかに簡単に表示されているHadleyのパッケージrvestに感心しました。私は、データのダウンロードに成功しています:

library(rvest) 
fs <- html_session("somewebsite.org") 
fs.login <- fs %>% follow_link("Sign In") 
login.form <- html_form(fs.login)[[1]] 
login.form <-set_values(login.form, userName = "myusername", password =  "mypassword") 
active.session <- submit_form(fs.login, login.form) 
my.data <- jump_to(active.session, "somewebsite.org/report/groups") 

私はタイマーでそれを実行している数回、それはそれは(それがGoogle Chromeを取るほぼ同量)のファイルをダウンロードして示して27秒の平均をとります。 200

タイプ:テキスト/ CSV

サイズ:45856046

結果は43.7 Mbの

my.data 

somewebsite /レポート/グループ

ステータス7つの要素を持つ変数クラスのセッションです

私の質問はどうすれば実際のCSVファイルにアクセスできますか? eまたはrのデータ?

str(my.data) 

List of 7 
$ handle :List of 2 
    ..$ handle:Class 'curl_handle' <externalptr> 
    ..$ url : chr "somewebsite.org" 
    ..- attr(*, "class")= chr "handle" 
$ config :List of 7 
    ..$ method : NULL 
    ..$ url  : NULL 
    ..$ headers : NULL 
    ..$ fields : NULL 
    ..$ options :List of 1 
    .. ..$ autoreferer: int 1 
    ..$ auth_token: NULL 
    ..$ output : NULL 
    ..- attr(*, "class")= chr "request" 
$ url  : chr "https://somewebsite.org/report/groups" 
$ back : chr "https://somewebsite.org/report/groups" 
$ forward : chr(0) 
$ response:List of 10 
    ..$ url  : chr "https://somewebsite.org/report/groups" 
    ..$ status_code: int 200 
    ..$ headers :List of 6 
    .. ..$ content-disposition: chr "attachment; filename=\"groups-2016-0318-063749.csv\"" 
    .. ..$ content-type  : chr "text/csv" 
    .. ..$ date    : chr "Fri, 18 Mar 2016 18:37:49 GMT" 
    .. ..$ server    : chr "Apache-Coyote/1.1" 
    .. ..$ transfer-encoding : chr "chunked" 
    .. ..$ connection   : chr "Close" 
    .. ..- attr(*, "class")= chr [1:2] "insensitive" "list" 
    ..$ all_headers:List of 1 
    .. ..$ :List of 3 
    .. .. ..$ status : int 200 
    .. .. ..$ version: chr "HTTP/1.1" 
    .. .. ..$ headers:List of 6 
    .. .. .. ..$ content-disposition: chr "attachment; filename=\"groups-2016-0318-063749.csv\"" 
    .. .. .. ..$ content-type  : chr "text/csv" 
    .. .. .. ..$ date    : chr "Fri, 18 Mar 2016 18:37:49 GMT" 
    .. .. .. ..$ server    : chr "Apache-Coyote/1.1" 
    .. .. .. ..$ transfer-encoding : chr "chunked" 
    .. .. .. ..$ connection   : chr "Close" 
    .. .. .. ..- attr(*, "class")= chr [1:2] "insensitive" "list" 
    ..$ cookies :'data.frame': 6 obs. of 7 variables: 
    .. ..$ domain : chr [1:6] "somewebsite.org" "#HttpOnly_.site.org" "signin.site.org" ".site.org" ... 
    .. ..$ flag  : logi [1:6] FALSE TRUE FALSE TRUE FALSE TRUE 
    .. ..$ path  : chr [1:6] "/" "/" "/" "/" ... 
    .. ..$ secure : logi [1:6] FALSE TRUE FALSE FALSE TRUE TRUE 
    .. ..$ expiration: POSIXct[1:6], format: "2017-03-18 12:37:16" NA NA NA ... 
    .. ..$ name  : chr [1:6] "fs_experiments" "ObSSOCookie" "TS01289383" "TS01b89640" ... 
    .. ..$ value  : chr [1:6] "u%3D-anon-%2Ca%3Dshared-ui%2Cs%3Dac76fc702b255a493a5856b5432b92b4%2Cv%3D0100110011010000000111111111001110101101000000000001100"| __truncated__ "15yUK2dU%2B78GK7o587gtwh3i%2ByORXGD8ne5XJBiGkiHpDAJ3%2F7rQ4Gql6T5DqQIwCg%2FSwSioAMIzzaRxGEFKsCkc%2BGohi1fdWhbR0urah6%2BJikm9lA6"| __truncated__ "01999b7023d69473f53740d0f7f2969d9d79e1a18c7e259f6baf643ce642a330fc0a3604d7" "01999b7023960237ab42ec3f429e5a452fe3559d683a090b19a65cf66ce0c01bc21bdb29bf78f030d36d4eeff4dec21ff185c54b06" ... 
    ..$ content : raw [1:45857717] 69 64 2c 6e ... 
    ..$ date  : POSIXct[1:1], format: "2016-03-18 18:37:49" 
    ..$ times  : Named num [1:6] 0 0 0.062 0.156 27.425 ... 
    .. ..- attr(*, "names")= chr [1:6] "redirect" "namelookup" "connect" "pretransfer" ... 
    ..$ request :List of 7 
    .. ..$ method : chr "GET" 
    .. ..$ url  : chr "https://somewebsite.org/report/groups" 
    .. ..$ headers : Named chr "application/json, text/xml, application/xml, */*" 
    .. .. ..- attr(*, "names")= chr "Accept" 
    .. ..$ fields : NULL 
    .. ..$ options :List of 4 
    .. .. ..$ useragent : chr "libcurl/7.43.0 r-curl/0.9.6 httr/1.0.0" 
    .. .. ..$ cainfo  : chr "C:/Users/Thisuser/Documents/R/win-library/3.2/httr/cacert.pem" 
    .. .. ..$ autoreferer : int 1 
    .. .. ..$ customrequest: chr "GET" 
    .. ..$ auth_token: NULL 
    .. ..$ output : list() 
    .. .. ..- attr(*, "class")= chr [1:2] "write_memory" "write_function" 
    .. ..- attr(*, "class")= chr "request" 
    ..$ handle  :Class 'curl_handle' <externalptr> 
    ..- attr(*, "class")= chr "response" 
$ html :<environment: 0x000000001aad2f60> 
- attr(*, "class")= chr "session" 
+0

'ライブラリ(HTTR)試してみてください。ライブラリ(readr); read_csv(mydata $ content) 'を実行し、それが機能するかどうか確認してください。 – A5C1D2H2I1M1N2O1R2T1

+0

アナンダ、すごくうまくいった。ありがとうございました! – farmkid

答えて

1

データは、「content」というリスト項目に格納されます。 "readr"パッケージのread_csvは、それを直接読み取ることができるはずです。

は、以下のことを試してみてください。

library(httr) 
library(readr) 

read_csv(my.data$content) 
関連する問題