Overblog Tous les blogs Top blogs Technologie & Science Tous les blogs Technologie & Science
Editer l'article Suivre ce blog Administration + Créer mon blog
MENU

BASH : nouvelle étape

27 Novembre 2012

Nous avons repris notre programme précédent, et nous y avons apporté quelques améliorations, à savoir :

- Nous avons amélioré la détection de l'encodage des pages en utilisant la commande file sur la page aspirée, avant d'exécuter le dump. Nous avons ainsi pu repérer a priori l'encodage des pages pour pouvoir les traiter différemment grâce à une clause if.

Voici donc notre nouveau programme :

Publicité

#!/bin/bash

read EnsembleURL;
read tablo;

# mise en place de l'en-tête de la page html

echo "<html>" >$tablo;
echo "<head>" >> $tablo;
echo "<meta http-equiv=\"Content-Type\" content=\"texte/html;charset=ISO-8859-1\"> </head> <body> <center>">> $tablo;



# création de l'en-tête d'un tableau et récupération du fichier URLS désiré. Début de la boucle 1

for fichier in `ls $EnsembleURL`; #debut de la boucle 1
do echo "<table border=\"2\">" >> $tablo;
echo "<th bgcolor=\"grey\" colspan=\"5\">Liste URL $fichier</th><tr><td bgcolor=\"#A9A9A9\" align=\"center\">n&ordm</td><td bgcolor=\"#A9A9A9\" align=\"center\">URL</td><td bgcolor=\"#A9A9A9\" align=\"center\">Pages aspir&eacutees</td><td bgcolor=\"#A9A9A9\" align=\"center\">Dump UTF-8</td><td bgcolor=\"#A9A9A9\" align=\"center\">Dump Autre Encodage</td></tr>" >> $tablo;

numligne=1;

# création du corps d'un tableau. boucle 2

while read url
do

echo "url n°$numligne du fichier $fichier : $url"; #affichage dans le terminal d'URL qu'il est en train de traiter

curl -L $url >./PAGES-ASPIREES/$fichier$numligne.html; #aspiration de l'URL

echo "<tr><td align=\"center\"> <font color=\"red\">$numligne</font> </td>" >>$tablo; #impression de la premiere colonne
echo "<td align=\"center\"><a href=\"$url\" target=\"_blank\">URL n&ordm$numligne</a></td>" >>$tablo; #impression de la deuxieme colonne

echo "<td align=\"center\"><a href=\"../PAGES-ASPIREES/$fichier$numligne.html\" target=\"_blank\">Page Aspir&eacutee n&ordm$numligne</a></td>" >> $tablo; #impression de la troisieme colonne

encodage=$(file -i PAGES-ASPIREES/$fichier$numligne.html | cut -d = -f2); #trouver l'encodage de l'URL

if [ "$encodage" = "utf-8" ]
then
lynx -dump -nolist -display-charset="UTF-8" $url >./DUMP-TEXT/$fichier$numligne.txt; #dumper la page en UTF-8
echo "<td align=\"center\"><a href=\"../DUMP-TEXT/$fichier$numligne.txt\" target=\"_blank\">R&eacutesultat du dump initial n&ordm$numligne</a> <br> $encodage</td>" >> $tablo; #impression de la quatrieme colonne
echo "<td align=\"center\"></td></tr>" >> $tablo; #impression de la cinquieme colonne
else


lynx -dump -nolist -display-charset="$encodage" $url >./DUMP-TEXT/$fichier$numligne.txt; #dumper la page dans l'encodage desire
echo "<td align=\"center\"></td>" >> $tablo; #impression de la quatrieme colonne
echo "<td align=\"center\"><a href=\"../DUMP-TEXT/$fichier$numligne.txt\" target=\"_blank\">R&eacutesultat du dump initial n&ordm$numligne</a> <br> $encodage</td></tr>" >> $tablo; #impression de la cinquieme colonne

fi


let "numligne=numligne+1"; #incrementation d'une variable numligne
done <./$EnsembleURL/$fichier; #fermeture de la boucle



echo "</table><br><br>" >> $tablo; #impression de la fermeture du tableau

done < $EnsembleURL/$fichier/; # fin de la boucle 1



# fin de la page html

echo "</center></body></html>" >> $tablo;

ScriptTableau.sh

Quelques soucis cependant cette semaines :

- Certaines pages dont l'encodage était détecté comme de l'UTF-8 ont mal été dumpées : en allemand, par exemple, toutes les lettres avec des umlaut : ä, ü, ö sont mal affichées. Il s'agit peut-être d'une erreur lors de la détection de l'encodage.

- Certaines pages sont bien aspirées, mais le résultat de la page dumpée affiche une erreur. Il s'agit peut-être de pages avec redirection, que nous avons réussi à aspirer grâce à l'option -L de curl. Peut-être avons-nous intérêt de travailler sur les pages aspirées directement, à moins qu'il existe une option de lynx, équivalente à celle -L de curl?

- Nous avons essayé, mais nous n'avons vraiment pas réussi à ajouter une clause sur le retour de curl, afin de ne poursuivre le traitement que sur les pages accessibles. Nous avons essayé les options -w http_code (ou --write-out http_code) et -f (ou --fail). Nous n'avons pas réussi à en comprendre le fonctionnement, malgré des tests sur le terminal et la lecture du manuel. La sortie que nous obtenons est la page aspirées avec une suite de nombres, correspondant sans doute au retour de curl, mais nous n'avons pas su les déchiffrer. Nous attendons le prochain cours avec impatience.

Publicité
Partager cet article
Repost0
Pour être informé des derniers articles, inscrivez vous :
Commenter cet article