Читайте файлы рекурсивно из репозиториев github - PullRequest
1 голос
/ 02 октября 2019

У меня есть несколько файлов в 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

1 Ответ

1 голос
/ 03 октября 2019

Мы можем сделать это довольно просто с помощью библиотеки 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"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...