BASH : Toujours plus loin
Voici notre avancé de la semaine :
- Nous avons finalement réussi à implémenter notre clause if sur le retour curl.
- Nous avons ajouté une nouvelle condition au traitement des pages dont l'encodage n'est pas de l'utf-8 : nous avons vérifié l'existence de l'encodage dans iconv pour ensuite se préparer à aller chercher plus d'information sur l'encodage dans les balises meta de la page, dans le cas où l'encodage ne serait pas reconnu par iconv.
EncodagePourIconv=$(iconv -l | egrep -io $encodage)
- Pour rechercher plus d'information dans les balises meta, nous utiliserons la commande egrep avec une expression régulière. Nous l'avons testé sur le terminal afin de l'implémenter en cours, mais nous n'avons pas réussi à trouver la bonne expression. Ceci est notre prochain objectif.
Voilà notre nouveau script :
#!/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>" >> $tablo;
echo "<tr><td bgcolor=\"#A9A9A9\" align=\"center\">nº</td><td bgcolor=\"#A9A9A9\" align=\"center\">URL</td><td bgcolor=\"#A9A9A9\" align=\"center\">Pages aspirées</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.
# Début de la BOUCLE 2
#=====================================================
while read url
do
echo "url n°$numligne du fichier $fichier : $url"; #affichage dans le terminal de l'URL qu'il est en train de traiter
curl -L -o ./PAGES-ASPIREES/$fichier$numligne.html $url;#aspiration de l'URL
retourcurl=$?;
echo "VOICI LE RETOUR CURL $retourcurl";
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º$numligne</a></td>" >>$tablo;#impression de la deuxieme colonne
#=====================================================
# Verification du retour curl.
# Début de la CLAUSE if 1
#=====================================================
if [ $retourcurl -ne 0 ]
# Lorsque le retour curl est different de 0, c'est-a-dire quand il montre une anomalie, on affiche seulementle texte "retour curl :" et le retour curl dans la troisieme colonne et on ne met rien dans les autres cellules.
then
echo "<td align=\"center\" bgcolor=\"red\">retour curl : $retourcurl</td><td align=\"center\" bgcolor=\"red\"></td><td align=\"center\" bgcolor=\"red\"></td>" >> $tablo;
else
# Sinon on traite la page
echo "<td align=\"center\"><a href=\"../PAGES-ASPIREES/$fichier$numligne.html\" target=\"_blank\">Page Aspirée nº$numligne</a><br>retour curl : $retourcurl</td>" >> $tablo;#impression de la troisieme colonne
#trouver l'encodage de l'URL
encodage=$(file -i PAGES-ASPIREES/$fichier$numligne.html | cut -d = -f2);
#=====================================================
# Traitement de l'URL en fonction de l'encodage.
# Début CLAUSE if 2
#=====================================================
#si la page est en utf-8 :
if [ "$encodage" = "utf-8" ]
then
lynx -dump -nolist -display-charset="utf-8" PAGES-ASPIREES/$fichier$numligne.html >./DUMP-TEXT/$fichier$numligne.txt;#dump
echo "<td align=\"center\"><a href=\"../DUMP-TEXT/$fichier$numligne.txt\" target=\"_blank\">Résultat du dump initial nº$numligne</a> <br> $encodage</td>" >> $tablo;#impression de la quatrieme colonne
echo "<td align=\"center\"></td></tr>" >> $tablo;#impression de la cinquieme colonne
#si la page est dans un autre encodage:
else
#=====================================================
# Est-ce que l'encodage de la page est connu de iconv?
# Début CLAUSE if 3
#=====================================================
EncodagePourIconv=$(iconv -l | egrep -io $encodage);
if [ "$EncodagePourIconv" = "" ]
# Si l'encodage n'est pas connu de iconv, c'est-a-dire si la sortie de iconv -l | egrep -io $encodage est vide, on essai de voir plus loin pour trouver l'encodage
then
bgcolor=\"red\"></td><td align=\"center\" bgcolor=\"red\"></td>" >> $tablo;
else
# Si l'encodage est reconnu par iconv, on dumpe la page.
lynx -dump -nolist -display-charset="$encodage" PAGES-ASPIREES/$fichier$numligne.html >./DUMP-TEXT/$fichier$numligne.txt;#dump
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ésultat du dump initial nº$numligne</a> <br> $encodage</td></tr>" >> $tablo;#impression de la cinquieme colonne
fi
#=====================================================
# Fin CLAUSE if 3
#=====================================================
fi
#=====================================================
# Fin CLAUSE if 2
#=====================================================
fi
#=====================================================
# Fin CLAUSE if 1
#=====================================================
let "numligne=numligne+1";#incrementation de la variable numligne
done < ./$EnsembleURL/$fichier;
#=====================================================
# Fin de la BOUCLE 2
#=====================================================
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;
nouveau script