#/usr/bin/perl #----------------------------------------------------------- my $rep="$ARGV[0]"; # on s'assure que le nom du répertoire ne se termine pas par un "/" si ça se termine par / on remplace par rien $rep=~ s/[\/]$//; # on initialise une variable contenant le flux de sortie my $DUMPFULL1=""; my %tableaudestextes=(); # pour mémoriser ce qu'on a déjà imprimé, pour éviter les doublons #---------------------------------------- my $output1="SORTIEtreetagger.xml"; if (!open (FILEOUT,">$output1")) { die "Pb a l'ouverture du fichier $output1"}; #---------------------------------------- &parcoursarborescencefichiers($rep); # on appelle le sous programme #---------------------------------------- print FILEOUT "\n\n"; print FILEOUT "$DUMPFULL1"; print FILEOUT ""; close(FILEOUT); exit; #---------------------------------------------- sub parcoursarborescencefichiers { # on entre dans le sous programme my $path = shift(@_); # on met dans la variable $path le contenu de la variable mise en argument opendir(DIR, $path) or die "can't open $path: $!\n"; # opendir : ouvre un rep - si on arrive pas : le pgm s'arrete et on envoie un message d'erreur my @files = readdir(DIR); # on lit le contenu du répertoire et on renvoie une liste qu'on stocke dans @files closedir(DIR); foreach my $file (@files) { # pour chaque ressource dans @files,on crèe $files next if $file =~ /^\.\.?$/; # on passe au suivant si on trouve . ou .. car on risque une boicle infinie $file = $path."/".$file; # on réécrit tout le chemin du fichier - le point permet la concaténation if (-d $file) { # on entre dans cette boucle si il y a dans $file un répertoire (-d vérifie que l'argument est un répertoire) &parcoursarborescencefichiers($file); #recurse! } if (-f $file) { # on entre dans cette boucle si il y a dans $file un fichier (-f vérifie que l'argument est un fichier) if ($file=~/0,2-3208,1-0,0.xml/){ # parcourt toute l'arborescence pour ne garder que les fichiers .xml open(FILEIN,$file); # on ouvre le fichier qu'on va lire $i=1; # compteur printf "$file\n"; # on voit si ça travaille while ($ligne = ){ # tant qu'il y a qqch à lire, on rentre dans la boucle if (($ligne!~/Retrouvez *l.*ensemble *des/) && ($ligne!~/Lisez *l.*int.*gralit.* *de *l.*article *pour *plus *d.*information./) && ($ligne!~/Toute *l.*actualit.* *au *moment *de *la *connexion/)) { if ($ligne=~/([^<]+)<\/description>/) { # si on trouve ce motif, on entre dans la boucle my $propre=$1;# on prend le motif et on le met dans $propre if ($propre=~/^(.+)<img width='1' height='1'.*$/) {$propre=$1}; #permet de supprimer les balises images contenues dans description $propre=~s/&#39;/\'/g;# nettoie $propre=~s/&#34;/\"/g;# nettoie $propre=~s/é/é/g;# nettoie $propre=~s/ê/ê/g;# nettoie $propre=~s/&eacute;/é/g;# nettoie $propre=~s/&egrave;/è/g;# nettoie $propre=~s/&icirc;/\î/g;# nettoie $propre=~s/&ocirc;/\ô/g;# nettoie $propre=~s/&ccedil;/\ç/g;# nettoie $propre=~s/&agrave;/\à/g;# nettoie $propre=~s/&/&/g;# nettoie $propre=~s/</\tmp.txt");#on ouvre un fichier temporaire print FILE $propre;#on met le contenu de $propre dans tmp.txt close FILE;# on ferme le fichier temporaire print "ETIQUETAGE \n"; #on commence l'étiquetage system ("perl \"./TreeTagger/cmd/tokenise-fr.pl\" tmp.txt > resultat-tokenize.txt");#on lance tokenise system ("tree-tagger.exe french.par -lemma -token -no-unknown resultat-tokenize.txt > resultat-etiquetage.txt");#on lance treetagger sur le résultat de tokenise system ("perl \"./TreeTagger/cmd/treetagger2xml.pl\" resultat-etiquetage.txt");# on convertit au format xml ce qui était au format txt print "FIN ETIQUETAGE \n";# on a fini l'étiquetage open(FILE, "resultat-etiquetage.txt.xml");# on ouvre le résultat de l'étiquetage qui est au format xml my $tmp=; #on met la première ligne car on ne veut pas avoir plusieurs fois l'en-tête my $resultat="";# on initialise la variable résultat while(my $lignetmp=) {# on lit toutes les lignes de resultat-etiquetage.txt.xml $resultat.=$lignetmp;#on concatène chaque ligne dans $resultat } close(FILE);#on ferme le fichier # fichier treetagger2.xml sera ds un fichier -> $resultat a concatener dans DUMPFULL $DUMPFULL1.=$resultat; # on concatène le contenu de $propre obtenu dans chaque boucle $i++; # on incrémente le compteur $tableaudestextes{$propre}++; # on incrémente pour dire qu'on a déjà rencontré ce texte pour qu'après si on le retrouve on ne réimprime pas la même séquence } } # fin de if } # fin de if } # fin de while close(FILEIN); # on ferme le fichier en lecture } } } } #----------------------------------------------