【问题标题】:Web locked CSV to dataframe in rWeb 将 CSV 锁定到 r 中的数据框
【发布时间】:2016-07-05 15:21:48
【问题描述】:

我在试图访问的私人网络服务器上有一个文件。我必须首先访问一个站点并使用我的凭据登录,然后我可以键入一个 URL(没有链接)来访问该文件,该文件会立即将一个 csv 文件下载到计算机上。我正在尝试让该 csv 文件直接从在线自动加载到 R 中,或者让它自动从我的硬盘下载和上传

我将每天刷新这些数据 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")

我已经用计时器运行了几次,平均需要 27 秒,这表明它正在下载文件(与谷歌浏览器的下载时间大致相同)。结果是一个包含 7 个元素 43.7 Mb 的变量类会话

my.data

一些网站/报告/群组

状态:200

类型:文本/csv

尺寸:45856046

我的问题是如何访问 r 中的实际 csv 文件或数据?

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"  

【问题讨论】:

  • 试试library(httr); library(readr); read_csv(mydata$content) 看看是否可行。
  • 阿南达,效果很好。谢谢!

标签: r csv rstudio-server


【解决方案1】:

数据存储在名为“内容”的列表项中。 “readr”包中的read_csv 应该可以直接读取。

尝试以下方法:

library(httr)
library(readr)

read_csv(my.data$content)

【讨论】:

    猜你喜欢
    • 2013-06-21
    • 1970-01-01
    • 2023-03-16
    • 1970-01-01
    • 1970-01-01
    • 2020-12-29
    • 2016-01-25
    • 1970-01-01
    相关资源
    最近更新 更多