La commande WGET


Après avoir collecté une liste d'urls, nous avons utilisé sous l'environnement Cygwin la commande wget (cf.journal pour l'explication). Cette commande permet d'aspirer des fichiers à partir du Web. Nous avons utilisé l'option -i qui permet de lire les URLs contenues dans un fichier avec la commande wget.

Les fichiers utilisés sont les suivants (l'adresse des URLs est contenue dans ce tableau) :
- barrage
- militaire
- obstacle
- politique
- psychologie
- routier
- social
- sport

Nous avons obtenu comme résultat des pages Web dont l'adresse est enregistrée en local et qui sont stockées dans un répertoire nommé wget. Nous avons créé un programme shell qui permet de récupérer l'adresse locale de chacune de ces pages et les affiche dans un tableau. Les adresses locales des pages aspirées sont contenues dans ce tableau.


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 ces noms correspond à un sens du mot "barrage") afin de créer une ligne dans le tableau qui reprend les sens.
    - de lire toutes les pages Web aspirées réparties dans ces différents dossiers.
    - de sauvegarder leurs adresses locales.
    - de noter ces adresses dans un tableau après le sens qui leur correspond.


Voici le programme :
#!/bin/bash

echo "donne nom de fichier html où stocker ces liens";
read tablo;

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

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

for nom in `ls wget/$sens/*.htm*`
do
echo $nom;
echo "<tr><td><font size="2"><a href="$nom">$nom</a></font></td></tr>" >> $tablo;
done

done

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



Commentaire :
Voici l'explication détaillée du programme utilisé :

#!/bin/bash

echo "donne nom de fichier html où stocker ces liens";
 
 # 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 tablo.

echo "<html><head><title>tableau de liens</title></head><body><font face=Arial><table border=0 bordercolor=black><tr><th>Wget</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 répertoire
  # 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,


echo "<tr><td bgcolor="#DDDDDD"><b>$sens</b></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 des autres.

for nom 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 répertoire wget. La variable nom 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 $nom;
  # on affiche sur la console Cygwin la variable $nom qui contient l'adresse des fichiers.

echo "<tr><td><font size="2"><a href="$nom">$nom</a></font></td></tr>" >> $tablo;
 # On imprime à la suite du fichier de sortie $tablo les informations entre les guillemets.
 
# On met l'adresse de chaque fichier html contenu dans $nom dans une colonne.

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. 


Le programme du tableau url :
Il récupère le nom des sous-dossiers contenus dans le répertoire url, puis il liste tous les fichiers ayant l'extension .txt présents dans ses sous-dossiers et affiche le contenu de ces fichiers. En sortie, un tableau sera créé contenant les URLs de ces fichiers texte.
#!/bin/bash
echo "donne nom de fichier html où stocker ces liens";
# 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>Url</th></tr>" > $tablo;
# Dans la variable $tablo, on imprime ces balises html ainsi que le texte hors de ces balises 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 url`
do
# La commande ls url va lister le contenu du répertoire url que contiendra la variable sens. La variable sens aura comme
# valeur les différents noms des
 dossiers du répertoire url.
# La boucle for...in permet d'appliquer à chaque sens contenu dans wget une série de commandes.
# Pour chaque sens,

echo "<tr><td bgcolor="#DDDDDD"><b>$sens</b></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 des autres.

for fic in `ls url/$sens/*.txt`
do
  # La commande ls avec le paramètre wget/$sens/*.txt permet de lister tous les fichiers ayant l'extension .txt
  # présents dans les dossiers $sens du répertoire url. 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 .txt.
  # Pour chaque fichier texte,

echo $fic;
# On affiche sur la console Cygwin la variable $fic qui contient l'adresse des fichiers.
done
# fin de la boucle.

for nom in `cat $fic`
do
 
# La commande cat permet d'afficher le contenu d'un fichier. La varible $fic renvoie aux fichiers textes trouvés dans les
    # sous-dossiers du répertoire url.
La variable nom aura comme valeur le contenu des fichiers.
    # Pour chaque ligne lu (dans chaque fichier texte trouvé),

echo $nom;
  # On affiche sur la console Cygwin la variable $nom qui contient le contenu des fichiers.
echo "<tr><td><font size="2"><a href="$nom">$nom</a></font></td></tr>" >> $tablo;
  # On imprime à la suite du fichier de sortie $tablo les informations entre les guillemets.
  # Le contenu de chaque fichier texte (donc les URLs) est inscrit dans une colonne.
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.