R:下载 Google 云端硬盘公用文件夹中的所有文件

标签 r download google-drive-api

我正在尝试获取使用 Google 云端硬盘公共(public)文件夹共享的 RAIS(巴西员工登记数据集)的数据。这是地址: https://drive.google.com/folderview?id=0ByKsqUnItyBhZmNwaXpnNXBHMzQ&usp=sharing&tid=0ByKsqUnItyBhU2RmdUloTnJGRGM#list

数据每年分为一个文件夹,在每个文件夹中,每个州都有一个文件可供下载。我想在 R 中自动执行所有年份的下载过程,如果不是至少在每年的文件夹中。下载的文件名应遵循手动下载时出现的文件名。

A 懂一点 R,但不会网络编程或网络抓取。这就是我所得到的: 通过手动下载 2012 文件的第一个文件,我可以看到我的浏览器用于下载的 URL: https://drive.google.com/uc?id=0ByKsqUnItyBhS2RQdFJ2Q0RrN0k&export=download

因此,我假设文件 ID 是:0ByKsqUnItyBhS2RQdFJ2Q0RrN0k

通过搜索 2012 年页面的 html 代码,我找到了该 ID 和与之关联的文件名:AC2012.7z。 所有其他 ID 和文件名都在 html 代码的那部分。因此,假设我可以正确下载文件,我想我至少可以概括其他文件。

在 R 中,我尝试了流畅的代码来下载文件:

url <- "https://drive.google.com/uc?id=0ByKsqUnItyBhS2RQdFJ2Q0RrN0k&export=download"
download.file(url,"AC2012.7z")
unzip("AC2012.7z")

它确实下载了,但在尝试解压缩文件时出现错误(在 R 中和手动使用 7.zip)在 R 中下载的文件一定有问题,因为文件大小 (3.412Kb) 没有匹配我从手动下载文件 (3.399Kb) 中获得的内容

最佳答案

对于今天尝试解决此问题的任何人,您可以使用 googledrive package .

library(googledrive)
ls_tibble <- googledrive::drive_ls(GOOGLE_DRIVE_URL_FOR_THE_TARGET_FOLDER)
for (file_id in ls_tibble$id) {
  googledrive::drive_download(as_id(file_id))
}

这将 (1) 触发一个身份验证页面在您的浏览器中打开,以授权使用 gargle 的 Tidyverse 库代表您的帐户访问 Google 云端硬盘,以及 (2) 下载所有文件该 URL 上的文件夹指向当前 R session 的当前工作目录。

关于R:下载 Google 云端硬盘公用文件夹中的所有文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26149700/

相关文章:

来自 Google Drive 的 Android Stream 视频

r - 为什么 .env 代词在 dplyr::slice_max 中不起作用?

r - 使用hadoop流运行R脚本作业失败:PipeMapRed.waitOutputThreads():子进程失败,代码为1

java - Android :"Unexpected end of stream"下载大文件异常

c# - 下载文件并自动保存到文件夹

java - 在 Java 中下载并解析 XML 文件

r - 循环遍历数据帧 : counting each pairwise combination of a value for each unique variable.

r - 在R中反转匹配操作

api - 谷歌应用域中的谷歌驱动器已用空间报告

javascript - 协作者使用 Google Drive/Realtime API 聊天