Boite à Outil 1 sans module

Automatisation du filtrage sur un arbre de fils RSS


Cette première méthode pour la BAO1 n'utilise aucun module complémentaire. Ce programme parcourt une arborescence de fichiers XML et applique un traitement sur chacun des fichiers rencontrés au moment du parcours. En sortie, le programme extraira le contenu textuel des fils RSS dans deux fichiers, l´un au format TXT et l´autre au format XML. Tout d'abord, on initialise deux variables qui seront les entrées de notre programme : $rep , le dossier contenant tous les fichiers RSS et $rubrique, chiffre correspondante à la rubrique à traiter. La variable hash %redondant gardera à chaque fois le contenu du titre pour éviter la répétition des informations. En sortie, on va créer deux fichiers pour chaque rubrique, encodés en UTF-8 et nommés selon son format, soit « le_monde_$rubrique.txt » et « le_monde_$rubrique.xml ». Ensuite, on passe au sous-programme Perl nommé« parcoursarborescencefichiers », qui permet de parcourir tous les fichiers XML de l´arborescence des fils RSS. Ce sous-programme reçoit comme entrée le répertoire où se trouvent tous nos fichiers RSS. À chaque fois qu´il trouve un sous-répertoire, il l´ouvre et vérifie s´il s´agit d´un répertoire ou d´un document XML. Il répète ce procédure jusqu´à ce qu´il a fini toute l´arborescence. C´est à l´intérieur de ce sous-programme où on va ajouter le traitement de chaque fils RSS. Quand il trouve un fichier dont l´extension est «.xml » et le nom corresponde à la chiffre qu´on a donné en entrée comme rubrique, il passe aux traitements suivants :

  • Suppression des retours à la ligne
  • Concaténation de tout le contenu textuel dans une seule ligne, la variable $ensemble.
  • Supprimer les possibles espaces entre balises
  • Récupération des données textuelles des balises « titre » et « description » grâce à l´expression régulière : $ensemble =~ m/<item> *.+?<title>(.+?)<\/title>.+?<description>(.+?)<\/description>/g
  • Cette regexp repère les balises titre et description et en extrait le contenu textuel vers les variables de stockage $title et $description.
  • On vérifie qu´on n´imprime pas des doublons avec l´instruction if (!exists $redondant{"$title"}). Si cette information n´existe pas dans le hash« redondant », le résultat de l´instruction est« true » et on passe aux suivants traitements, si le résultat est« false », cela veut dire que cette variable a déja été lue et gardée donc on va pas la traiter. Dans le cas où le résultat est« true », on procède au nettoyage des données avec le sous-programme nommé« nettoyage ».
  • En dernier lieu, on imprime les données qu´on a obtenu comme résultats dans les deux fichiers.
  • Le script rend deux fichiers : un fichier au format texte brut qui contient tous les titres et descriptions, et un fichier XML qui comprend ces mêmes titres et descriptions balisés.
  • Voici les fichiers obtenus pour la rubrique 3476 par le biais du script : Rubrique 3476 XML Rubrique 3476 TXT
  • Voici les fichiers obtenus pour la rubrique 3238 par le biais du script : Rubrique 3238 XML Rubrique 3238 TXT
  • Voici les fichiers obtenus pour la rubrique 3546 par le biais du script : Rubrique 3546 XML Rubrique 3546 TXT
  • Voici les fichiers obtenus pour la rubrique livre (3260) par le biais du script : Rubrique 3260 XML Rubrique 3260 TXT

Pour lancer le script :
BAO1.pl nom_du_répertoire nom_de_la_rubrique

Télécharger le script :

Visualiser le script sans module :

Get in touch

Contact