我在github中有一些文件,我想在R中递归读取。因此,如果执行此操作,我会获得所有文件的列表。
library(httr)
req <- req <- GET("https://api.github.com/repos/jakevdp/data-USstates/git/trees/master?recursive=1")
stop_for_status(req)
all.files <- unlist(lapply(content(req)$tree, "["), use.names = F)
file.names.only <- unlist(lapply(content(req)$tree, "[", "path"), use.names = F)
这不是我真正想要的。我希望能够从存储库本身中读取这些内容,就像在本地使用list.files
一样。我们如何使这项工作?或者,至少,获取可在本地读取的存储库中每个文件的完整URL列表。
从这个存储库中说:https://github.com/jakevdp/data-USstates
答案 0 :(得分:1)
我们可以使用rvest
库相当简单地做到这一点。我们使用.js-navigation-open
html节点选择链接,然后从链接中提取href
值。我们得到了几个空字符串,.[. != ""]
删除了这些字符串。
library(rvest)
fileList <- read_html("https://github.com/jakevdp/data-USstates") %>%
html_nodes(".js-navigation-open") %>%
html_attr("href") %>%
.[. != ""] # remove empty elements
[1] "/jakevdp/data-USstates/blob/master/README.md" "/jakevdp/data-USstates/blob/master/state-abbrevs.csv"
[3] "/jakevdp/data-USstates/blob/master/state-areas.csv" "/jakevdp/data-USstates/blob/master/state-population.csv"