Archivage de données
Sommaire
# Plan de la séance
- Introduction
- Qu’est-ce que Wget ?
- Installation
- Premier téléchargement avec Wget
- Télécharger des images en vrac avec Wget
- Archiver des documents web avec Wget
- Conclusion
# 0. Introduction
Internet donne accès à une quaisi-infinité de contenus, disponibles sur demande vingt-quatre heures par jour, chaque jour de l’année. Comme c’est pratique !
… jusqu’au jour où ce n’est plus vrai : bande passante au ralenti ou connexion coupée, site web en maintenance ou hors service, archives disponibles uniquement par VPN ou depuis une adresse autorisée, etc. Les raisons deviennent soudainement de plus en plus nombreuses d’assurer un accès aux ressources dont on a besoin pour travailler, comme une base de données, des images précises ou des textes particuliers. Bref, il faut une stratégie d’archivage.
Pour y parvenir, nous vous proposons aujourd’hui un outil : wget
!
# 1. Qu’est-ce que Wget ?
wget
est un logiciel qui fonctionne en ligne de commande.
Il permet d’effectuer des téléchargements avec diverses options et protocoles.
Nous verrons en quoi ces options peuvent être utiles !
Nous allons nous en servir aujourd’hui pour archiver certains objets d’étude disponibles en ligne, mais que nous souhaitons pouvoir consulter hors connexion.
Pour un rappel sur le fonctionnement du terminal (l’interface en ligne de commande), jetez un coup d’œil à la séance 01 de la saison 4.
Une bonne compréhension de la notion de fichiers et de dossiers est également essentielle !
# 2. Installation
Si vous utilisez macOS ou Linux, wget
est probablement déjà installé.
Vous pouvez vous en assurer en ouvrant une fenêtre de terminal et en entrant :
# cela affichera le message d'aide de wget
wget --help
Sur Windows, vous pouvez utiliser Cygwin (émulateur de commandes Unix pour Windows) ou Ubuntu bash sur Windows 10 pour avoir accès à wget
.
Vous pouvez aussi télécharger wget
directement depuis ce site qui en fait la distribution.
Installation sur Linux
sudo apt install wget
Installation sur macOS
# avec Homebrew
brew install wget
# 3. Premier téléchargement avec Wget
Nous allons effectuer un premier téléchargement tout simple avec wget
.
Par exemple, nous allons archiver l’image d’une toile de l’artiste suprématiste Kasimir Malevitch sur Wikimedia Commons.
Sur la page de l’image Wikimedia Commons, nous allons cliquer sur le bouton « Télécharger ». Dans la boîte de dialogue, plusieurs champs s’offrent à nous :
- l’URL de la page, qui est la même que celle qui figure dans la barre d’adresse du navigateur ;
- l’URL du fichier, qui est véritablement celle qui nous intéresse ;
- le crédit de l’auteur du fichier, qu’on peut copier en texte brut ou en format HTML.
Dans la boîte de dialogue, copier l’URL du fichier, puis le coller dans le terminal, en remplaçant url-du-fichier
par la véritable URL :
wget url-du-fichier
# ...
# si tout s'est bien passé, wget devrait avoir téléchargé
# l'image dans le répertoire courant!
Nous pouvons examiner le résultat avec la commande ls
:
ls
# la console devrait retourner notre fichier téléchargé
# -> Amsterdam_-_Stedelijk_Museum_-_Kazimir_Malevich_...
Et la même chose dans notre explorateur de fichiers :
Bravo ! Vous avez fait votre premier téléchargement avec wget
!
… mais il est vrai que c’est assez peu excitant (nous aurions pu tout simplement sauvegarder l’image directement depuis la page de Wikmédia Commons).
Examinons un cas où wget
s’avérera encore plus utile !
# 4. Télécharger des images en vrac avec Wget
# 4.1 Une image unique sur Gallica
De nombreux objets d’étude, comme un livre ou un journal, consistent en une série de plusieurs numérisations – une image pour chaque page numérisée. Nous pouvons tirer parti de ce découpage sur des plateformes comme Gallica pour archiver les pages qui nous intéressent !
Comment pourrions-nous numériser les dix premières pages du roman Une saison en enfer d’Arthur Rimbaud, accessible librement grâce à la plateforme de la BNF ?
wget
devrait toujours respecter les lois, règlements et principes du savoir-vivre. Les agissements du créateur de Facebook demeurent en ce sens discutables et sont utilisés à des fins d’exemple seulement.
Un clic droit sur l’image permet d’accéder à l’URL de l’image via le menu contextuel.
Dans cet exemple, la nouvelle commence à partir du 13e folio numérisé.
Vous pouvez copier cette URL pour effectuer le téléchargement avec wget
:
# créez-vous un dossier de travail et naviguez-y
# 1. creation du dossier
mkdir mon-dossier-pour-apprendre-wget
# 2. se déplacer dans le dossier
cd mon-dossier-pour-apprendre-wget
# on récupère l'image du folio no. 13 avec la commande wget
wget https://gallica.bnf.fr/ark:/12148/btv1b86108277/f13.highres
# 4.3 Télécharger une liste d’images
Nous voulons archiver les 10 premières pages du livre. Nous pourrions poursuivre en répétant la commande wget
, mais en incrémentant le numéro de folio (13
, 14
, …), à la fin de l’URL (...f13.highres
) :
wget https://gallica.bnf.fr/ark:/12148/btv1b86108277/f14.highres
wget https://gallica.bnf.fr/ark:/12148/btv1b86108277/f15.highres
wget https://gallica.bnf.fr/ark:/12148/btv1b86108277/f16.highres
# ... et ainsi de suite
Cela est un peu redondant ! Nous pourrions automatiser ces opérations répétitives afin de lancer le téléchargement en arrière-plan, ce qui nous permettrait de faire autre chose pendant ce temps – une façon judicieuse de gagner son temps, surtout pour des téléchargements très longs avec de nombreux fichiers !
Nous allons mettre à profit ce que nous avons appris avec la notion de texte brut, ou le format .txt
.
wget
peut lire une liste d’URLs à partir d’un fichier. On pourrait donc créer un fichier liste-urls.txt
qui ressemblerait à ceci :
|
|
Pour lancer le téléchargement de cette liste d’images inscrite dans le fichier, on peut utiliser l’option -i
(ou --input-file
) de wget
:
# Pour lancer le téléchargement à partir d'une liste dans un fichier
wget -i liste-urls.txt
.docx
n’est pas un format texte, mais un format binaire, dans lequel le texte ne peut pas être lu directement. Le format texte brut (ou format texte, tout court) ne contient rien d’autre que le texte qu’on tape dans un éditeur tel que Notepad, TextEdit ou Vim.
Si cette liste est très longue, elle pourrait s’avérer fastidieuse à faire à la main, et nous pourrions risquer d’y introduire des erreurs. Un script pourrait nous aider à générer la liste de manière rapide et fiable !
Si vous avez python
installé sur votre appareil, essayez l’étape suivante !
# 4.3 Utilisation d’un script python (optionnel)
Créez un fichier generateur-urls.py
. Remplissez-le avec le bloc de code suivant.
|
|
Il ne reste plus qu’à lancer le script :
# ce script devrait remplir le fichier `liste-urls.txt`
python generateur-urls.py
On a ainsi un fichier liste-urls.txt
rempli avec tous les folios que nous voulons télécharger.
# on peut examiner le contenu du fichier avec la commande `cat`
cat liste-urls.txt
Lançons à présent le téléchargement de nos pages avec wget
:
# la commande wget, avec quelques options
wget \
-i liste-urls.txt \
--limit-rate=100k \
--directory-prefix=rimbaud-une-saison-en-enfer \
--continue
# ...
# pour chaque fichier, wget affichera un état d'avancement
Et voilà le résultat final : un répertoire avec nos images archivées, juste pour nous !
tree .
.
├── generateur-urls.py
├── liste-urls.txt
└── rimbaud-une-saison-en-enfer/
├── 13.medres
├── 14.medres
├── 15.medres
├── 16.medres
├── 17.medres
├── 18.medres
├── 19.medres
├── 20.medres
├── 21.medres
├── 22.medres
└── 23.medres
# 5. Archiver des documents web avec Wget
On peut utiliser wget
pour sauvegarder une page web, ou même un site web au complet !
L’option --mirror
(ou -m
) peut justement être pratique pour créer une « copie miroir » d’un site web localement sur sa machine.
# 6. Archiver une page web
Télécharger une page html avec wget
. Ajouter l’option -P
(ou --directory-prefix
) pour indiquer le dossier dans lequel la page doit être enregistrée.
-O
(ou --output-document
) pour changer le nom du fichier.
--adjust-extension
pour ajouter une extension appropriée aux fichiers téléchargés (cela s’applique principalement aux pages HTML).
wget \
https://fr.wikipedia.org/wiki/Orang-outan \
--directory-prefix=dossier-sur-les-orangs-outans
--output-document=page-wikipedia.html \
--adjust-extension \
--limit-rate=200k
# 6.1 Archiver uniquement certains fichiers d’un site web
Télécharger uniquement les fichiers d’un format donné à partir d’un site web. L’option -c
ou --continue
permet de continuer un téléchargement interrompu.
wget https:/skhole.ecrituresnumeriques.ca/ \
-r \
-l2 \
-nd \
-A.mp3 \
-c \
-P archives-audio-skhole
# 7. Archiver un site web au complet
Télécharger un site web au complet. (Attention : l’option --mirror
n’est pas toujours autorisée.)
wget [URL] \
--mirror \
--convert-links \
--adjust-extension \
--page-requisites \
--no-parent \
--limit-rate=200k
# 8. Conclusion
Nous espérons que vous avez compris l’utilité de l’outil wget
et qu’il vous aidera à mettre en place vos propres stratégies d’archivage. Vous aurez compris à la lumière de cet atelier qu’il peut être judicieux de combiner wget
avec un langage de programmation, comme python
ou bash
. Ce n’est qu’une pièce parmi tant d’autres dans votre boîte à outils !