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/&#39;/\'/g;
$recup=~s/&#34;/\"/g;
$recup=~s/é/é/g;
$recup=~s/ê/è/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/&#39;/\'/g;
$recup=~s/&#34;/\"/g;
$recup=~s/é/é/g;
$recup=~s/أ©/é/g;
$recup=~s/ê/ê/g;
$recup=~s/&eacute;/é/g;
$recup=~s/&egrave;/è/g;
$recup=~s/&euml;/ë/g;
$recup=~s/&ecirc;/ê/g;
$recup=~s/&agrave;/à/g;
$recup=~s/&acirc;/â/g;
$recup=~s/&ccedil;/ç/g;
$recup=~s/&iuml;/ï/g;
$recup=~s/&icirc;/î/g;
$recup=~s/&ugrave;/ù/g;
$recup=~s/&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/<((\w)*(\W*))*>/ /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