La commande LYNX avec l'option -dump


Après l'aspiration des pages web, nous devions utiliser la commande lynx avec l'option -dump afin de convertir les pages Web en pages texte. (cf journal)

Pour cette tâche, nous avons créé un programme qui automatise la commande lynx -dump sur les fichiers aspirés. Le résultat a été obtenu après l'exécution du programme ci-dessous. Cliquez sur résultat pour le voir.


Explication générale :
 Nous avons créé un programme qui permet  :
    - de récupèrer le nom des sous-répertoires contenus dans le dossier wget (chacun de ses noms correspond à un sens du mot "barrage") afin de créer dans le dossier dump des sous-dossiers portant les mêmes noms.
    - de lire toutes les pages Web aspirées, réparties dans les sous-dossiers.
    - de les traiter avec la commande lynx -dump.
    - de rediriger ces pages dumpées vers les sous-dossiers respectifs du répertoire dump.

Pour finir, le programme produit un tableau html en deux colonnes contenant en vis à vis les adresses des pages aspirées stockées dans le dossier Wget (colonne 1) et les adresses des pages "dumpées" enregistrées dans le dossier dump.


Voici le programme :
#!/bin/bash

echo "Tapez le nom du tableau des liens hypertextes Wget Lynx.";
read tablo;

echo "<html><head><title>tableau de liens</title></head><body><font face=Arial><table border=0 bordercolor=black><tr><th>WGET</th><th>LYNX</th></tr>" > $tablo;

for sens in `ls wget`
do
mkdir ./dump/$sens;
echo "<tr><td bgcolor="#DDDDDD"><b>$sens</b></td><td bgcolor="#DDDDDD"></td></tr>" >> $tablo;

for fic in `ls wget/$sens/*.htm*`
do
echo $fic;
lynx -dump $fic > $fic.txt
mv $fic.txt ./dump/$sens/;

for fichierdump in `ls dump/$sens/*.txt`
do
echo $fichierdump;
done

echo "<tr><td><font size="2"><a href="$fic">$fic</font></h9></td><td><font size="2"><a href="$fichierdump">$fichierdump</a></font></td></tr>" >> $tablo

done
done

echo "</table></font></body></html>" >> $tablo;



Commentaire :
Reprenons en détail le script pour commenter les commandes qui le constituent.

#!/bin/bash

echo "Tapez le nom du tableau des liens hypertextes Wget Lynx.";
    # Sur la console de Cygwin, nous demandons à l'utilisateur de choisir le nom du fichier de sortie en html.
    # La commande echo permet d'afficher sur la console Cygwin
les informations contenues entre guillemets.

read tablo;
    # Le nom que l'utilisateur a tapé sera contenu dans une variable nommée tablo.

echo "<html><head><title>tableau de liens</title></head><body><font face=Arial><table border=0 bordercolor=black><tr><th>WGET</th><th>LYNX</th></tr>" > $tablo;
    # Dans la variable $tablo (qui contient le nom du tableau html), on imprime ces balises html ainsi que
    #  le texte en-dehors des balises html. Ces balises vont permettre la mise en page du fichier html.
    # La commande echo permet d'imprimer les informations contenues entre guillemets, ici, ces informations
    # sont dirigées dans la variable $tablo.

for sens in `ls wget`
do
    # La commande ls permet de lister le contenu d'un dossier, ainsi la commande ls wget va lister le contenu du dossier
    # wget que contiendra la variable sens. La variable sens aura comme valeur les différents noms des
    # dossiers de wget (c.-à-d. les différents sens du mot "barrage").
    # La boucle for ... in permet d'appliquer à chaque sens contenu dans wget une série de commandes.
    # Pour chaque sens,

mkdir ./dump/$sens;
    # on va créer dans le dossier dump un sous-dossier portant le même nom que celui dans Wget.
    # La commande mkdir permet de créer des dossiers, le paramètre ./dump/$sens indique le chemin relatif
    # où seront créés les dossiers (c.-à-d. qu'il faut remonter d'un répertoire, puis aller dans le dossier nommé
    # Dump et y créer les sous-dossiers respectifs).
    # Ce paramètre indique aussi le nom (c'est la variable $sens) que porteront ces nouveaux sous-dossiers.

echo "<tr><td bgcolor="#DDDDDD"><b>$sens</b></td><td bgcolor="#DDDDDD"></td></tr>" >> $tablo;
# Dans le fichier de sortie $tablo, on imprime
à la suite les informations contenues entre guillemets.
# La commande echo suivie des doubles chevrons indique que les informations entre guillemets vont être
# redirigées dans une variable, ici $tablo, et rajoutées à la suite les unes aux autres.

for fic in `ls wget/$sens/*.htm*`
do
   # La commande ls avec le paramètre wget/$sens/*.htm* permet de lister tous les fichiers ayant l'extension
   # .html
ou .htm présents dans les dossiers $sens du Wget. La variable fic aura comme valeur cette liste.
   # La boucle for ... in va permettre l'application des commandes qui suivent à chaque fichier
listé ayant
   # l'extension.html ou .htm.

   # Pour chaque fichier html ou htm,

echo $fic;
    # on affiche sur la console la variable $fic qui contient l'adresse des fichier html.

lynx -dump $fic > $fic.txt
    # La commande lynx avec l'option -dump va permettre de ne garder que le texte. Cette commande
    #  est utilisée sur les fichiers html contenus dans la variable $fic et les enregistrent avec l'extension .txt
    #  (texte seul).

mv $fic.txt ./dump/$sens/;
    # La commande mv va déplacer les fichiers "lynxés" ($fic.txt) vers les sous-dossiers $sens du répertoire dump.

for fichierdump in `ls dump/$sens/*.txt`
do
    # La commande ls suivi du paramètre dump/$sens/*.txt va lister tous les fichiers ayant l'extension .txt dans les
    # dossiers $sens du répertoire dump et va retourner cette liste dans la variable fichierdump. La boucle
    # permet d'appliquer la commande qui suit pour chaque fichier ayant l'extension .txt trouvé dans les
    # dossiers $sens.

echo $fichierdump;
    # Pour chaque fichier texte, on affiche sur la console Cygwin la variable $fichierdump qui contient
    # l'adresse de ce fichier.

done
    #  fin de la boucle.

echo "<tr><td><font size="2"><a href="$fic">$fic</font></h9></td><td><font size="2"><a href="$fichierdump">$fichierdump</a></font></td></tr>" >> $tablo
    # On imprime à la suite du fichier de sortie $tablo les informations entre les guillemets.
   
# Pour chaque fichier html contenu dans $fic, on associe l'adresse du fichier txt contenu
    # dans $fichierdump.


done
    # fin de la boucle.

done
  # fin de la boucle.

echo "</table></font></body></html>" >> $tablo;
 # On imprime à la suite du fichier de sortie les informations entre guillemets.