#!/bin/bash
echo "Donnez le nom du dossier contenant les fichiers de liens http : ";
read dossier;
echo "Donnez le nom du fichier html où stocker ces liens dans des tableaux : ";
read tablo;
echo "<html><head><title>tableau de liens</title></head><body>" >> $tablo;
i=1;
for fichier in `ls $dossier`
{
echo "<table border=1>" >> $tablo;
echo "<tr><td align="center" bgcolor=\"silver\" colspan=\"7\"><b>Fichier $fichier</b></td></tr>" >> $tablo;
echo "<tr><td>Numéros</td><td>URLs</td><td>Pages aspirées</td><td>Dump initial</td><td>Dump utf-8</td><td>Contextes utf-8</td><td>Contextes html</td>" >> $tablo;
for nom in `cat $dossier/$fichier`
{
wget -O ../PAGES-ASPIREES/$i.html $nom
retourwget=$? ;
echo "RETOUR WGET : $retourwget";
if [[ $retourwget == 0 ]]
then
encodage=$(file -i ../PAGES-ASPIREES/$i.html);
echo "ENCODAGE initial : $encodage";
if [[ $encodage == "utf-8" ]]
then
lynx -dump -nolist -display_charset=$encodage ../PAGES-ASPIREES/$i.html > ../DUMP-TXT/$i-utf8.txt ;
else
echo "on cherche un charset dans la page aspiree...";
if egrep -qi "(charset ?=.*?(\"|\')|encoding ?=.*?(\"|\'))" ../PAGES-ASPIREES/$i.html ;
then
echo "Presence d'un charset...";
encodage=$(egrep -m 1 -o '(((utf|UTF)-(8|16|32))|(gb|GB)(k|K|2312|18030)|(iso|ISO|Iso)-8859-(\w)(\w)?|(WINDOWS|windows)-1252|(WINDOWS|windows)-1256|((m|M)(a|A)(c|C)(R|r)(O|o)(M|m)(a|A)(n|N))|us-ascii)' ../PAGES-ASPIREES/$i.html | sort -u) ;
echo "charset extrait : $encodage ";
VERIFENCODAGEDANSICONV=$(iconv -l | egrep -io $encodage | sort -u);
if [[ $VERIFENCODAGEDANSICONV == "" ]]
then
echo "VERIF : <$VERIFENCODAGEDANSICONV> ==> inconnu par inconv, on ne fait rien"
echo "<tr><td align=\"center\" width=\"50\">$i</td><td align=\"center\" width=\"100\"><a href=\"$nom\">lien n°$i</a></td><td align=\"center\" width=\"100\"><a href=\"../PAGES-ASPIREES/$i.html\">$i.html</a></td><td align=\"center\" width=\"100\" bgcolor=\"aqua\"><small>Encodage<br/>non détecté</small></td><td align=\"center\" width=\"100\" bgcolor=\"aqua\"><small>Encodage<br/>non détecté</small></td><td align=\"center\" width=\"100\" bgcolor=\"aqua\"><small>Encodage<br/>non détecté</small></td><td align=\"center\" width=\"100\" bgcolor=\"aqua\"><small>Encodage<br/>non détecté</small></td></tr>" >> $tablo;
else
echo "VERIF : <$VERIFENCODAGEDANSICONV> ==> connu par inconv, c'est parti ==> lynx, iconv..."
lynx -dump -nolist -display_charset=$encodage ../PAGES-ASPIREES/$i.html > ../DUMP-TXT/$i.txt ;
echo "ENCODAGE final : $encodage (avant conversion vers utf-8)";
iconv -f $encodage -t utf-8 ../DUMP-TXT/$i.txt > ../DUMP-TXT/$i-utf8.txt
echo "<tr><td align=\"center\" width=\"50\">$i</td><td align=\"center\" width=\"100\"><a href=\"$nom\">lien n°$i</a></td><td align=\"center\" width=\"100\"><a href=\"../PAGES-ASPIREES/$i.html\">$i.html</a></td><td align=\"center\" width=\"100\"><a href=\"../DUMP-TXT/$i.txt\">$i.txt</a><br/><small>($encodage)</small></td><td align=\"center\" width=\"100\"><a href=\"../DUMP-TXT/$i-utf8.txt\">$i-utf8.txt</a></td><td align=\"center\" width=\"100\"><a href=\"../CONTEXTES/$i-utf8.txt\">$i-utf8.txt</a></td><td align=\"center\" width=\"100\"><a href=\"../CONTEXTES/$i-utf8.html\">$i-utf8.html</a></td></tr>" >> $tablo;
fi
else
echo "Pas de charset detecte : on ne fait rien pour le DUMP... ";
echo "<tr><td align=\"center\" width=\"50\">$i</td><td align=\"center\" width=\"100\"><a href=\"$nom\">lien n°$i</a></td><td align=\"center\" width=\"100\"><a href=\"../PAGES-ASPIREES/$i.html\">$i.html</a></td><td align=\"center\" width=\"100\" bgcolor=\"aqua\"><small>Encodage<br/>non détecté</small></td><td align=\"center\" width=\"100\" bgcolor=\"aqua\"><small>Encodage<br/>non détecté</small></td><td align=\"center\" width=\"100\" bgcolor=\"aqua\"><small>Encodage<br/>non détecté</small></td><td align=\"center\" width=\"100\" bgcolor=\"aqua\"><small>Encodage<br/>non détecté</small></td></tr>" >> $tablo;
fi
fi
else
echo "<tr><td align=\"center\" width=\"50\">$i</td><td align=\"center\" width=\"100\"><a href=\"$nom\">lien n°$i</a></td><td align=\"center\" width=\"100\" bgcolor=\"red\">Page non aspiree...</td><td align=\"center\" width=\"100\" bgcolor=\"aqua\"><small>Encodage<br/>non détecté</small></td><td align=\"center\" width=\"100\" bgcolor=\"aqua\"><small>Encodage<br/>non détecté</small></td><td align=\"center\" width=\"100\" bgcolor=\"aqua\"><small>Encodage<br/>non détecté</small></td><td align=\"center\" width=\"100\" bgcolor=\"aqua\"><small>Encodage<br/>non détecté</small></td></tr>" >> $tablo;
fi
let "i+=1";
}
let "i+=1";
let "j+=1";
}
echo "</table>" >> $tablo;
echo "<br>" >> $tablo;
echo "</body></html>" >> $tablo;
Problème!!!!!!!!!!!
Certaines pages dont l'encodage n'est soit disant pas détecté ne sont pas dumpées.. Or lorsqu'on regarde le code source des pages html, on retrouve différents charset : utf-8; ISO 8859-* qui ne sont pas pris en compte par notre script.... WHYYYYYYYYYYYYYYYYYYYYYY????????
Pour les pages en question, examinez en détail ce qu'affiche le script au moment de la détection du charset, il devrait afficher ce qu'il extrait à l'issue de cette commande :
RépondreSupprimerecho "charset extrait : $encodage ";
s'il n'extrait ce que vous attendez de lui, pê qu'il faut intervenir au niveau de la regexp définie actuellement pour extraire les bons charsets de vos pages.
SF
au moment de la détection du charset sur cygwin, il écrit bien charset extrait : iso-8859- ou utf-8 (par exemple) et pourtant sur le tableau il est indiqué qu'aucun charset n'a été détecté..
RépondreSupprimeron va chercher avec ce que vous nous avez dit
merci
GRoupe Parole
Si vous ne trouvez pas, envoyez moi votre script zippé sur mon adresse gmail, je regarderai...
RépondreSupprimerSF