Sample image

Boîte à Outils 1

Objectif : Parcourir une arborescence de fils RSS et extraire des contenus textuels(plus particulièrement le titre et la description). L'extraction de ces informations se fait à l’aide d'un script en Perl. Et à la fin du traitement, nous devons avoir deux types de fichiers par rubrique : un fichier txt et un fichier xml. Ils seront encodés en UTF-8.

Le script d'extraction via Perl+RegExp

Lorsque nous lançons ce script nous devons donner 2 arguments : Perl programme.pl 2017(ARG°1) 3208(ARG°2)
ARG°1 => Le répertoire que nous voulons parcourir : $rep.
ARG°2 => La rubrique dont nous voulons extraire le texte : $rubrique

Instanciation des 2 fichiers de sorties :
my $output1=$rubrique.".xml"; (la sortie xml)
my $output2=$rubrique.".txt"; (la sortie txt)

Ensuite, on définit une fonction parcoursarborescencefichiers. Elle sélectionne le premier élément donné en argument (ici c'est le $rep c'est à dire le répertoire).
La fonction se terminera après l'examination de toute l'arborescence :
Est ce que c'est un répertoire ? => (my $path = shift@_)
Si c'est le cas, on fait appel à la fonction dans la fonction qui est donc récursive avec sub parcoursarborescencefichiers.
Puis on continue de descendre dans l'arborescence afin de trouver un élément de type fichier ( next if $file =~ /^\.\.?$/; ).

Ensuite, si c'est un fichier on fait une lecture du fichier :
La fonction se terminera après l'examination de toute l'arborescence :
- On cherche à extraire le texte entre les balises titres & descriptions (avec while $texte = ~ ...)
- Puis, nous stockons en mémoire tous les titres et les descriptions extraites dans deux variables ($1 & $2)

On fait ensuite appel à une fonction "nettoyage" qui prend en argument les variables précédemment.
Cette fonction va faire une nettoyage de tous les caractères spéciaux à la fois du fichier texte brut mais également du fichier XML.
On n'oublie pas d'insérer $dico, qui permet de stocker qu'une fois le titre (pour éviter les redondances).

Télécharger

Le script d'extraction via à la bibliothèque Perl XML::RSS

On ecrit le même programme mais on utilise le module XML::RSS. On n'oublie donc pas d'indiquer dans l'en-tête use XML::RSS. La seule partie qui change c'est la partie évaluation du fichier puisqu'ici nous avons des fichiers rss. Ainsi, l'instruction eval {$rss->parsefile($file) vérifie bien si le fichier $file est bien un fichier RSS.

Le programme cherche dans l'objet $rss la clé $item qui donne l'accès à la clé $description & $titre. Puis, le titre et la description sont récupérés et nettoyer .

Télécharger