Overblog Tous les blogs Top blogs Technologie & Science Tous les blogs Technologie & Science
Editer l'article Suivre ce blog Administration + Créer mon blog
MENU

Deuxième script : addition d'une colonne pour les pages aspirées

13 Novembre 2012

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 :

Publicité

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

Publicité

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&ordm</td><td bgcolor=\"#A9A9A9\">URL</td><td bgcolor=\"#A9A9A9\">Pages aspir&eacutees</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&ordm$numligne</a></td><td><a href=\"../PAGES-ASPIREES/$file$numligne.html\" target=\"_blank\">Page Aspir&eacutee n&ordm$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

Publicité

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.

Partager cet article
Repost0
Pour être informé des derniers articles, inscrivez vous :
Commenter cet article
S
- il faut effectivement vérifier votre liste d'URL initiale pour avoir suffisamment de données à traiter<br /> - le script a l'air d'avancer dans le bon sens, on abordera demain des pbs pas encore traités ici (par exemple : toutes les données produites doivent être en UTF-8 y compris la page HTML avec les tableaux de liens<br /> - moi-même travaillant habituellement sous macosx, je vous confirme qu'il est possible de travailler avec wget et curl sur un mac. Pour wget, une recherche de &quot;wget sur mac&quot; sur google fournit pas mal de solution. Pour curl, c'est sans pb a priori car disponible par défaut normalement
Répondre
A
Merci. Oui j'ai bien vu que je pouvais installer wget sur mon mac, c'est ce que je ferai à terme. Mais j'ai vu qu'il fallait d'abord installer une commande comme sudo, télécharger des script pour enfin installer wget. Je n'ai pas encore osé le faire. .Et donc pour parer à l'urgence, il nous a été plus facile d'utiliser curl.