Pages

dimanche 12 décembre 2010

ETAPES LYNX, EGREP


Le dernier script que j’avais affiché sur le blog concernait en principal la commande Wget. Tout ne marche pas très bien, car mes pages aspirées étaient aspirées en théorie mais en pratique le contenu était toujours à 0 et en essayant d’ouvrir une page html, ça ne marchait pas.
On a essayé après remplacer wget avec curl et apparemment l’aspiration des pages a très bien marche, c'est-à-dire que d’un pourcentage de 50 aspiration avec Wget on a passé à un pourcentage de 90 aspiration avec Curl.

Quelques explications générales sur les commandes et le fonctionnement du script :

if [[ $retourcurl == 0 ]] – là je dis si la commande curl marche
then
encodage =$(file -i ./PAGES-ASPIREES/${fic%.*}/$i.html cut -d= -f2);
echo "ENCODAGE initial : $encodage";


Après, dans le script on a plusieurs conditions:

1.Si l’encodage initial est en utf-8 on exécute plusieurs commandes c'est-à-dire on fait le lynx, l’egrep et aussi on utilise une commande qui inclut un autre script en perl: mini-grep-multilingue.
Le fichier multigrepmultilingue nous permet de renforcer la reconnaissance et l’extraction des encodages et permet également d’extraire l’encodage des pages qui sont dans des langues plus difficile à traiter comme le chinois, arabe, etc.

2.Si l’encodage initial est différent de utf 8 on cherche le charset de la page par la commande : if egrep -qi "(charset ?=.*?(\"\')encoding ?=.*?(\"\'))" ./PAGES-ASPIREES/${fic%.*}/$i.html ;

3.Si le charset est détecté on l’extrait en utilisant l’expression :
encodage=$(egrep -m 1 -o'(((utfUTF)-(81632))(gbGB)(kK231218030)(isoISOIso)-8859-(\w)(\w)?(WINDOWSwindows)-1252(WINDOWSwindows)-1256((mM)(aA)(cC)(Rr)(Oo)(Mm)(aA)(nN))us-ascii)'./PAGES-ASPIREES/${fic%.*}/$i.html sort -u)
-l’option –m – arrête de lire le fichier après un comptage max. de lignes.
-l’option l – reconnait l’encodage trouvé de la page s’il fait partie de la liste donné ;
-l’option –o - montre la partie de la ligne adéquate qui correspond au pattern ;

4.Le charset doit être reconnu par iconv;

5.S’il n’est pas reconnu, on ne fait rien et dans le tableau ça va apparaitre un blanc ;

6.S’il est reconnu on exécute les commandes lynx, egrep et le mini-grep-multilingue en perl.

7.On reflet tout cela dans notre tableau en faisant un echo "....." $tablo;

8.Dernière étape on ferme toutes les boucles ouvertes - on utilise fi et/ou les accolades.

Et bien, voyons comment se présente le script :





Voilà comment se passe le traitement pour l’anglais, en utilisant le script affiché plus haut sur la page:



Bon, il faut pas oublier le résultat obtenu, donc je met ici une partie du tableau pour le roumain:

Enfin, après tant de galère avec les histoires d’encodage, on a une victoire, mais, il y a toujours le mais
Je me suis aperçu que j’ai un autre problème, cette fois-ci avec le motif ; c'est-à-dire que le motif est différent pour chaque sens, par exemple, en roumain j’ai quatre mots.
Question : Comment faire pour traiter un motif différent en fonction du sens et comment le refléter dans les tableaux ?
Réponse : à suivre probablement…

Aucun commentaire: