Deuxième script : addition d'une colonne pour les pages aspirées
La deuxième étape de notre projet consiste à aspirer localement les pages dont nous avons relevé les URLS, pour ensuite pouvoir les traiter et les analyser plus tard. Deux possibilités s'offraient à nous : utiliser la commande wget ou utiliser la commande curl. Etant donné que l'une d'entre nous travaille sur un mac, la solution la plus évidente a été d'utiliser curl.
En fait, nous avons été confrontées à un double problème dès le début du travail sur ce nouveau script. La commande wget n'est par défaut pas installée sur mac et la commande curl ne l'est pas sur linux. Nous n'avons pas réussi à installer wget sur mac, tandis qu'il a suffit d'une ligne de commande pour installer curl sur linux :
sudo apt-get install curl
L'autre problème auquel nous avons été confrontées est que la version de linux 11. 10 dont nous disposons ne reconnaît pas la fonction let. Nous avons résolu ce problème en précisant bash dans la ligne de commande :
bash PROGRAMMES/ScriptTableaux2.sh <PROGRAMMES/input.txt
Voici donc sans plus tarder notre nouveau script :
#!/bin/bash
# récupération des coordonnées des fichiers d'input et d'output et enregistrement dans des variables
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 file in `ls $EnsembleURL`;
do echo "<table border=\"2\">" >> $tablo;
echo "<th bgcolor=\"grey\" colspan=\"3\">Liste URL $file</th><tr><td bgcolor=\"#A9A9A9\">nº</td><td bgcolor=\"#A9A9A9\">URL</td><td bgcolor=\"#A9A9A9\">Pages aspirées</tr>" >> $tablo;
numligne=1;
# création du corps d'un tableau. boucle 2
while read url
do
echo "url n°$numligne du fichier $file : $url";
curl -L $url >./PAGES-ASPIREES/$file$numligne.html;
echo "<tr><td> <font color=\"red\">$numligne</font> </td><td><a href=\"$url\" target=\"_blank\">URL nº$numligne</a></td><td><a href=\"../PAGES-ASPIREES/$file$numligne.html\" target=\"_blank\">Page Aspirée nº$numligne</a></td></tr>" >> $tablo;
let "numligne=numligne+1";
done <./$EnsembleURL/$file;
# fin de la boucle 1
echo "</table><br><br>" >> $tablo;
done < $EnsembleURL/$file/;
# fin de la page html
echo "</center></body></html>" >> $tablo;
ScriptTableau2.sh
Fichier d'input
Et enfin le résultat, meme si, les pages étant enregistrées sur nos machines, les liens de la troisième colonne ne seront pas actifs :
Tableau de résultats à trois colonnes
Quelques remarques :
- Il était plus confortable de pouvoir suivre le déroulement de l'aspiration des pages sur le terminal, alors nous avons ajouté au programme la ligne :
echo "url n°$numligne du fichier $file : $url";
- Certaines urls étaient des redirections, nous avons ajouté l'option -L à la commande curl pour remonter jusqu'à la page désirées et l'aspirer. Malgré cela, une trentaine de nos pages nous sont revenues vides, en erreur 400 ou inaccessibles. Ces erreurs sont certainement en partie dues à un mauvais choix des urls de notre part. Nous en trouverons de nouvelles pour compenser.