r - 使用 https URL 登录后下载文件

标签 r rvest rcurl httr

我正在尝试下载一个 excel 文件,我有该文件的链接,但我需要先登录该页面才能下载该文件。我已经通过 rvest、rcurl 和 httr 成功通过了登录页面,但是我在登录后下载文件非常困难。

url <- "https://website.com/console/login.do"
download_url <- "https://website.com/file.xls"
session <- html_session(url)
form <- html_form(session)[[1]]

filled_form <- set_values(form,
                          userid = user,
                          password = pass)

## Save main page url
main_page <- submit_form(session, filled_form)

download.file(download_url, "./file.xls", method = "curl")

当我运行 download.file 命令时,该文件会在我的工作目录中弹出,但它不是我要下载的文件,实际上只是一个没有数据的损坏的 .XLS 文件。

作为引用,如果我通过chrome登录网站,并在登录后将下载链接粘贴到浏览器窗口中,文件会自动开始下载。如果我在 IE 中执行相同操作,则会弹出文件下载对话框并询问我是否要保存文件。

可能的相关资料:
  • 这是针对我在工作时禁用 cookie 的计算机,因此我无法使用浏览器中的 cookie
  • 我已经尝试根据 SO 上的大量帖子对 httr 和 rcurl 使用不同的方法,但无济于事

  • 在此先感谢您的时间!

    最佳答案

    /r/rstats 上的某个人实际上找到了这个问题的答案。我的问题的解决方案如下:

    #after login and submit_form do this:
    download <- jump_to(main_page, download_url)
    
    # write file to current working directory
    writeBin(download$response$content, basename(download_url))
    

    Link to original SO question

    关于r - 使用 https URL 登录后下载文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50052117/

    相关文章:

    r - 在 R 中使用 rvest 填充和提交搜索

    r - 如何正确使用 tryCatch() 并忽略此 rvest 函数中的 404 错误?

    r - R中多元时间序列的自相关

    r - 烦恼如何从该网站上抓取数据(使用R)

    r - 如果 dplyr 中满足条件,则直接对行进行条件求和

    r - 使用 R/RCurl 高效下载大文件

    r - devtools::install_github() - 忽略 SSL 证书验证失败

    Rcurl:url.exists 当 url 存在时返回 false

    r - 如何从 R 中的随机森林中获取单个树的概率?

    r - 为什么 R 中的 gsubfn 中的\\b 不适合我?