pluriTAL – BLOG Master pluriTAL [ParisX, ParisIII, INALCO]

ped14-IS : BARRAGE – script pour le cours du 9/11/06

Posted in Projet 2006-2007 by pluritaluser on 9 novembre 2006

Ce que le script doit faire :

  1. aspirer les pages Web (sur les quels pointent les URLs stockés dans les fichiers textes dont nous disposons déjà dans un répertoire) dans des répertoires locaux de sorte qu’il existe pour chaque fichier d’URL (= pour chaque usage) un répertoire avec les pages aspirées correspondantes >> commande wget.
  2. extraire un fichier texte brut (débalisé qui ne contiendrait pas de balisage HTML) à partir de chaque page aspirée >> commande lynx -dump.
  3. donner un joli tableau html qui contiendrait les liens vers les pages web (publiées donc sur le réseau Internet), vers les pages aspirées (stockées donc localement sur nos machines) et vers les fichiers contenant du texte débalisé (pareil, stockées sur nos machines) >> sortie du script dans un fichier interprétable comme du HTML

Comment il va le faire

L’utilisateur saisit trois valeurs : le nom du répertoire contenant les fichiers avec les URLs, le nom du répertoire où seront stockés (1) les sous-répertoires avec les pages wgetées (un répertoire par usage) contenant chacun à son tour un répertoire avec les fichiers lynx-o-dumpées et (2) le fichier html avec le tableau.
Le script va créer un seul tableau pour tous les usages. Pour cela, j’ai utilisé deux boucles for x in y { … } : (1) celle qui liste le répertoire contenant les fichiers, qui crée les sous-répertoires pour chaque usage et qui inscrit dans le tableau une ligne d’entête correspondante à chaque usage et (2) celle (qui est embriquée dans la première) qui lit les fichiers, exécute les commandes wget et dump, qui inregistre les fichiers sortie là où il faut et qui fait pour chaque enregistrement une ligne avec des liens.

Pour donner le nom aux répertoires d’usage et pour nommer les fichiers wgetés et lynx-o-dumpé, j’ai utilisé un compteur avec la syntaxe: compt=$[$compt + 1] Cela marche, mais est-ce la meilleure façon de faire un compteur dans la programmation shell?

Et voici le code


#######################################################################
#!/bin/bash

##########################SAISIE DES VALEURS PAR L’UTILISATEUR #################

echo "***Donnez le nom du repertoire contenant les listes des URL : »;
read rep;
echo « ***Donnez le nom du repertoire pour le resultat : »;
read nr;
mkdir $nr;
echo « ***Donnez le nom pour le fichier avec le tableau : »;
read nf;

reporg=`pwd`; cd $rep ; cheminURL=`pwd` ; cd $reporg/$nr ;

#################################ENTETE de la page HTML#######################
echo « <html><head><title>TABLEAU DE LIENS : $nf</title><meta charset=\ »UTF-8\ »></meta></head><body><font face=\ »Arial\ »/><h2><font color=\ »peru\ »>$nf</font></h2><hr></hr><i>généré à partir du répértoire :</i> <b>$cheminURL</b><br/> <i>contenant les fichiers : </i> <b>|  » >>$nf.html;

for file in `ls $cheminURL` #enumérer les fichier d’URL traités
{
echo « $file | » >>$nf.html;
}
echo « </b><br/><br/> » >>$nf.html;

#################### LE TABLEAU COMMENCE ICI ##################################
####faire l’entête de la table

echo « <table border=\ »3\ »><tr bgcolor=\ »peru\ »><th>URL</th><th> PAGE ASPIREE </th><th> DUMP LYNX </th><th> CONTEXTE </th></tr> » >>$nf.html;

######première boucle pour le traitement des fichiers d’entrée

for file in `ls $cheminURL`

{
numREP=$[$numREP + 1] ; #compteur pour le numéro de répertoire = dd’usage
mkdir usage$numREP ; #créer le répertoire pour les pages aspirées

echo « <tr><td colspan=\ »4\ » align=\ »center\ » bgcolor=\ »papayawhip\ »><i>répertoire </i>: <b>usage$numREP</b> <i>fichier source </i>: <b>$file</b></td></tr> » >>$nf.html;

cd usage$numREP ;
mkdir DUMP;

######boucle imbriquée pour le traitement des URL: wget, lynx et les inscriptions dans le tableau###
for url in `cat $cheminURL/$file`
{
numURL=$[$numURL + 1]; #compteur pour le numéro d’enregistrement : c-à-d la page web avec le fichier aspirée et le fichier dumpé
wget –tries=1 -O pagASP$numURL.html $url;
lynx -dump $url >DUMP/pagDUMP$numURL.txt;

echo « <tr align=\ »center\ »><td><a href=\ »$url\ » target=\ »_blank\ » title=\ »$url\ »>page WWW n°$numURL</a></td><td><a href=\ »./usage$numREP/pagASP$numURL.html\ » target=\ »_blank\ »>pagASP$numURL.html</a></td><td><a href=\ »./usage$numREP/DUMP/pagDUMP$numURL.txt\ » target=\ »_blank\ »>pagDUMP$numURL.txt</a></td><td>CONTEXTE la prochaine fois</td></tr> » >>../$nf.html;
}

######fin de la boucle imbriquée#################################################
cd ..;
}

echo « </table></body></html> » >> $nf.html;

############################################FIN#########################

… j’ai mis quelques commentaires, les variables sont en gras, mais je suis d’accord que cela reste plutôt illisible. Regardez ce que cela fait … MAIS ATTENTION, quand je fais copier-coler des scripts publiés sur le blog vers un fichier en local cela fait des choses bizarres avec les signes  » (double quôte) et Cygwin a du mal à le lire… Avez vous le même problème?

A demain

Ivan Šmilauer

Publicités

Une Réponse

Subscribe to comments with RSS.

  1. tal-p3 said, on 9 novembre 2006 at 10:01

    Ivan bonjour

    J’ai modifié votre post en y insérant une balise « blockquote » (avec une police de caractère distincte) pour mieux distinguer le texte du code du texte du post.

    SF


Laisser un commentaire

Choisissez une méthode de connexion pour poster votre commentaire:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s

%d blogueurs aiment cette page :