Boîte à outil 1 : Filtrage & nettoyage

Objectif :

-Construire un programme qui parcourt une arborescence de fichiers et applique

un traitement sur chacun des fichiers rencontrés lors du parcours.

-En sortie, le programme doit construire un fichier structuré (XML) contenant une

trace de traitement réalisé sur les fichiers.

Traitement à réaliser :

Filtrer les contenus textuels des balises DESCRIPTION et TITLE et en conservant

le titre de la "rubrique" du fils.

Les fils RSS ont deux formats différents : XML et TXT. Ce qui nous intérésse c'est seulement les fichiers XML.

Ressources :

Le squelette du programme :

parcours-arborescence-fichiers.pl

Construire un script de filtrage

-Le filtreur (script filtreur.pl)

Construire un script de nettoyage

-Le nettoyeur (script nettoyeur.pl)


Le filtreur

#!/usr/bin/perl
open(FILEINPUT,"$ARGV[0]");
open(FILEOUTPUT, ">resultat.txt");
$i=1;
while($ligne = <FILEINPUT>){ # boucle while.
if ($ligne=~/<description>([^<]+)<\/description>/){
my $recup=$1;
$recup=~s/&#38;#39;/\'/g;
$recup=~s/&#38;#34;/\"/g;
$recup=~s/&#233;/é/g;
$recup=~s/&#234;/è/g;
# il va imprimer la ligne dans notre fichier résultat.
print FILEOUTPUT "Contenu de description $i : $recup\n\n";
$i++;
}
}
close(FILEOUTPUT);
close(FILEINPUT);

Le nettoyeur

#!/usr/bin/perl
open(FILEINPUT,"$ARGV[0]");
while($ligne = <FILEINPUT>){
$ligne=~s/RECHERCHE/REMPLACEMENT/g;
print$ligne;
}


Réalisation :

On a modifié les deux scripts : le filtreur et le nettoyeur.

Ensuiste on les a intégrés dans le script parcours-arborescence-fichier.pl qui est

fournis par les professeurs.

Pour le nettoyage, il y avait beaucoup de problèmes de codages, de répétitions, et de quelques phrases inutiles.

$recup=~s/&#38;#39;/\'/g;
$recup=~s/&#38;#34;/\"/g;
$recup=~s/&#233;/é/g;
$recup=~s/أ©/é/g;
$recup=~s/&#234;/ê/g;
$recup=~s/&amp;eacute;/é/g;
$recup=~s/&amp;egrave;/è/g;
$recup=~s/&amp;euml;/ë/g;
$recup=~s/&amp;ecirc;/ê/g;
$recup=~s/&amp;agrave;/à/g;
$recup=~s/&amp;acirc;/â/g;
$recup=~s/&amp;ccedil;/ç/g;
$recup=~s/&amp;iuml;/ï/g;
$recup=~s/&amp;icirc;/î/g;
$recup=~s/&amp;ugrave;/ù/g;
$recup=~s/&amp;uuml;/ü/g;
$recup=~s/Retrouvez l'ensemble des dépêches sur http:\/\/www\.lemonde\.fr/ /g;
$recup=~s/Toute l'actualité au moment de la connexion/ /g;
$recup=~s/Toute l'actualitأ© au moment de la connexion/ /g;
$recup=~s/Lisez l'intégralité de l'article pour plus d'information./ /g;
$recup=~s/Lisez l'intégralité de l'article pour plus d'information. / /g;
$recup=~s/&lt;((\w)*(\W*))*&gt;/ /g; # enlève toutes les balises

 

Après, j'ai choisi les rubriques sur lequels je veux faire le nettoyage et le filtrage

%rubrique = (
"3208" => "A la une.xml",
"3236" => "Médias.xml",
"3242" => "Sports.xml",
"651865" => "Technologies.xml",
"3260" => "Livres.xml",
"3244" => "Sciences.xml",
"3546" => "Voyages.xml",
"3476" => "Cinéma.xml",
"3210" => "International.xml",
"3214" => "Europe.xml",
"3224" => "Société.xml",
"3232" => "Opinions.xml",
"3246" => "Culture.xml" ) ;

Résultat:

Cela permet d'obtenir deux sorties ( XML & TXT ) bien filtrées et bien nettoyées.

Voir le script complet cliquer ICI

Pour télécharger le script cliquer ICI




FOUTOUN CHAAR © 2009.Tout droit réservés.