Je vous présente aujourd’hui un tutoriel pour télécharger et manipuler des fichiers avec R.
Dans le cadre de la thématique sur la santé mentale que j’ai établie pour le mois de novembre, je cherche des données sur le sujet dans le contexte canadien. L’entreprise LifeWorks publie mensuellement une rapport sur la santé mentale en entreprise.
Cependant, les fichiers sont difficiles à trouver pour les mois passés. Comme les URL ont toutes un format séquentiel, j’utilise le langage R pour télécharger les fichiers joints au site web, identifier le bon format de contenu et les renommer avec la bonne extension.
J’inclus un exemple pratique où je télécharge des documents variés depuis un site web et je renomme les fichiers avec la bonne extension selon leur contenu.
Je fais appel aux librairies tidyverse, stringr et here.
Voici le code source utilisé dans le vidéo. Notez qu’il n’a été testé que sur Linux. Il pourrait fonctionner sur macOS. Cependant, il ne fonctionnera pas sur Windows.
Je recommande de toute façon d’utiliser Linux pour manipuler des fichiers avec R !
### ### Extraction des fichiers joints du site de LifeWorks ### pour ensuite identifier tous les PDF ### Auteur: François Pelletier ### Date: 30 octobre 2021 ### library("tidyverse") library("here") # Création du répertoire dir.create("./pdf") # Liste de fichiers nb <- 1159:1 # Télécharger tous les fichiers for (i in nb) { url <- paste0("https://lifeworks.com/media/", i, "/download") print(url) try({ download.file(url, destfile = paste0("pdf/", i, ".pdf"), method = "libcurl") }) Sys.sleep(0.25) } # Déterminer quels fichiers sont des PDF pdfinfo <- data.frame(pdfnames = list.files(paste0(here::here(), "/pdf"), full.names = TRUE)) pdfinfo %>% mutate( system2.args = paste("-b", pdfnames), filetype.raw = system2( command = "file", args = system2.args, stdout = TRUE ), file.format = str_replace(filetype.raw, "^(\\w+)(?=\\s.*).*", "\\1") ) -> pdfinfo2 # Fréquence de chacun des types de fichiers table(pdfinfo2$file.format) # Renommer les fichiers avec les bonnes extensions extfix <- data.frame( file.format = c("JPEG", "MPEG", "PDF", "PNG", "SVG"), file.extens = c("jpg", "mp4", "pdf", "png", "svg") ) pdfinfo2 %>% inner_join(extfix, by = c("file.format" = "file.format")) %>% mutate(newname = str_replace(pdfnames, "^(.*)(?=pdf$)(pdf$)", paste0("\\1", file.extens))) -> pdfinfo3 res.rename <- file.rename(pdfinfo3$pdfnames, pdfinfo3$newname)
Vous avez de nombreux documents et vous aimeriez les transformer en données structurées ? Vous avez un besoin d’extraction de données depuis un site web ? Je peux vous aider !
Commençons par une courte rencontre pour explorer les possibilités de collaboration !