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

时间:2014-10-01 20:08:29

标签: r download google-drive-api

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

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

知道一点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)没有匹配我从manualy下载文件得到的(3.399Kb)

1 个答案:

答案 0 :(得分:0)

对于今天尝试解决此问题的任何人,您都可以使用 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) 触发一个身份验证页面在您的浏览器中打开以授权 Tidyverse 库使用 gargle 代表您的帐户访问 Google Drive 和 (2) 下载该文件夹中的所有文件当前 R 会话的当前工作目录的 URL。

相关问题