BAO 1

Extraction du contenu textuel des fils RSS

La première étape de cette boîte à outils est l’extraction du contenu textuel des fils RSS. Les fils RSS sont des fichiers XML dont le contenu est produit automatiquement, en fonction des mises à jour faites sur un site web. Cela permet de récupérer facilement le contenu de sites d’actualité, par exemple. Notre boîte à outils est basée sur le fil RSS du journal Le Monde de l’année 2021.

L’objectif de la BAO1 est de récupérer les titres et les descriptions de chaque article appartenant à une rubrique spécifiée, dans le fil RSS du journal Le Monde de l’année 2021. On souhaite obtenir deux fichiers en résultat : un fichier TXT et un fichier XML, qui contiendront les mêmes titres et descriptions.

Pour cela, on a créé des programmes écrits dans deux langages : Perl et Python. Les deux fonctionnent de la même manière : on leur donne le nom du fichier duquel on va extraire les articles, et le numéro de la rubrique à extraire. J'ai choisi d'extraire les rubriques "culture" (3246) et "idées" (3232).

PROGRAMMES

LangageCommande de lancement dans le terminalProgramme commentéRésultat
Perl perl bao1.pl 2021 3246 bao1.pl bao1_pl_3246.txt
bao1_pl_3246.xml
Python python3 bao1.py 2021 3246 bao1.py bao1_py_3246.txt
bao1_py_3246.xml

Programme PERL

bao1.pl

Ce programme prend en arguments le répertoire contenant les fils RSS, et le numéro de la rubrique à extraire. Après les avoir récupérés sous forme de variables, on peut passer à l'extraction. On commence par ouvrir le répertoire, et récupérer son contenu dans une liste. Pour chacun des éléments de cette liste, après avoir éliminé les fichiers cachés, on va récupérer son chemin en concaténant le répertoire et le nom de l'élément, puis vérifier si l'élément est un fichier ou un dossier. Si c'est un dossier, alors on relance la fonction depuis le début avec ce dossier. Si l'élément est un fichier, et si c'est un fichier XML, on va l'ouvrir et lire son contenu. On supprime "$/", qui contient "\n" par défaut, afin de lire le fichier en une seule fois. Pour chaque ligne du fichier, on va ensuite chercher les balises "title" et "description" à l'aide des expressions régulières, et récupérer leur contenu, qu'on va nettoyer avec la fonction "nettoyage", qui supprime les éléments propres au langage XML, et s'assure d'avoir un point à la fin de chaque élément textuel. On vérifie ensuite si le titre n'est pas déjà dans le dictionnaire des titres, ce qui permet d'éviter de récupérer des doublons, dans le cas où le même article aurait été publié plusieurs fois, par exemple pour corriger une erreur. Si c'est la première fois qu'on rencontre cet article, alors on l'ajoute dans le dictionnaire, puis on écrit le titre et la description dans les fichiers outputs, en les formatant, avec des sauts de ligne pour le TXT, et des balises "item", "titre" et "description" pour le fichier XML

RubriqueFormat de sortieRésultat
Culture TXT bao1_pl_3246.txt
Culture XML bao1_pl_3246.xml
Idées TXT bao1_pl_3232.txt
Idées XML bao1_pl_3232.xml

Programme PYTHON

bao1.py

Ce programme prend en arguments le répertoire contenant les fils RSS, et le numéro de la rubrique à extraire. Après les avoir récupérés sous forme de variables, on peut passer à l'extraction. On commence par compiler les expression régulières qu'on utilisera plus tard, afin d'éviter au système de les compiler à chaque tour de boucle. Ensuite, on récupère le contenu du répertoire dans une liste. Pour chacun des éléments de cette liste, après avoir éliminé les fichiers cachés, on va récupérer son chemin en concaténant le répertoire et le nom de l'élément, puis vérifier si l'élément est un fichier ou un dossier. Si c'est un dossier, alors on relance la fonction depuis le début avec ce dossier. Si l'élément est un fichier, et si c'est un fichier XML, on va l'ouvrir et lire son contenu en une seule fois. On va ensuite chercher toutes les balises "title" et "description" à l'aide des expressions régulières. Pour chaque résultat trouvé, on va récupérer le contenu des balises, qu'on va nettoyer avec la fonction "nettoyage", qui supprime les éléments propres au langage XML, et s'assure d'avoir un point à la fin de chaque élément textuel. On vérifie ensuite si le titre n'est pas déjà dans le dictionnaire des titres, ce qui permet d'éviter de récupérer des doublons, dans le cas où le même article aurait été publié plusieurs fois, par exemple pour corriger une erreur. Si c'est la première fois qu'on rencontre cet article, alors on l'ajoute dans le dictionnaire, puis on écrit le titre et la description dans les fichiers outputs, en les formatant, avec des sauts de ligne pour le TXT, et des balises "item", "titre" et "description" pour le fichier XML.

RubriqueFormat de sortieRésultat
Culture TXT bao1_py_3246.txt
Culture XML bao1_py_3246.xml
Idées TXT bao1_py_3232.txt
Idées XML bao1_py_3232.xml