Secteur TAL Informatique,
Université Sorbonne nouvelle, Paris 3
19 rue des Bernardins, 75005 Paris
Etape 1 :
Automatisation des Tâches
Liens
lien direct : http://www.tal.univ-paris3.fr/cours/atomatisationdestaches-etape1.html
Transparents
Transparents Série 1 (version PDF), "Présentation du cours et du projet, le mini-projet "barrage", ... ou (version HTML) .
Transparents Série 2 (version PDF) : "Fichiers et systèmes de fichiers"
Préambule :
Examen d’un mot sur le web : le mot « barrage » (ou un mot de votre choix)
A. Rechercher le mot sur le web (cf slides):
- On pourra commencer par lire "Recherches sur Internet : il n'y a pas que Google dans la vie" (Un dossier de L'Entreprise)
- Première étape : apprendre à chercher avec les moteurs généralistes
- Deuxième étape : élargir son champ d'investigation avec les métamoteurs
- Troisième étape : fonctionner à l'instinct avec les portails
- Quatrième étape : approfondir sa recherche avec les bases de données payantes
- Cinq astuces pour mieux utiliser un moteur de recherche
- Une astuce de pro : "Utilisez des portails sectoriels pour repérer des sources spécialisées"
- Moteur de recherche sur le web
- Google : http://www.google.fr (moteur généraliste)
- Yahoo : http://fr.yahoo.com/ (moteur généraliste)
- Mozbot : http://mozbot.fr/ (moteur généraliste francophone, cf Google)
- Google(Blogs) : http://blogsearch.google.com/blogsearch (moteur de blogs)
- Google scholar : http://scholar.google.com/ (moteur « académique »)
- Google print : http://print.google.com (moteur de livres)
- CiteSeer : http://citeseer.ist.psu.edu/ (moteur de littérature scientifique)
- Etc.
- Moteur sur Corpus du Monde électronique (cf slides)
- Wikipédia
- le mot "barrage" : historique des mises à jours
- etc.
Essayer de récupérer les pages « pertinentes ». Comment faites-vous ? À la main ou non. Difficultés rencontrées. Type de fichiers « pêchés » ? L’état du texte ?
Rédigez une note de synthèse.
B. Outils de collectes : wget (cf slides)
Lire la documentation de la commande
Rédigez votre propre mode d'emploi
C. Objectif n°1 (cf slides)
Constituer un corpus « restreint » sur le Web (50 pages minimum) avec un échantillon des différents usages du mot « barrage » (à partir des ressources (sur le web, sur un corpus de Presse))
Outils à utiliser pour la collecte : wget
Automatisation, point de départ :
A. Chaque groupe a un fichier ou plusieurs fichiers contenant les URL illustrant les emplois du mot "barrage"
- fichier barrage_hydro.txt
http://www.barrage.com/index.html
http://www.edf.fr/energie_hydro.html
http://www.un_amour_de_barrage.fr/durance.htm- fichier tir_de_barrage.txt
http://www.red_devils.com/on_les_aura.html
http://www.ioc.org/derniers_matchs.html
http://www.disqualifiez_moi.net/competitions/leeds_vs_liverpool.htm- fichier autres_usages.txt
......
B. Chaque groupe a enregistré en local les URL contenues dans ces fichiers, par la commande : wget -i
La figure suivante illustre la suite des traitements réalisés à ce stade :
Problématique "générale" : on a environ 50 URL en local, on veut automatiser les tâches suivantes :
Pour un usage du mot "barrage" illustré dans les URL du fichier barrage_hydro.txt ou du fichier tir_de_barrage.txt ou d'un autre, on veut permettre :
- Tâche numéro 1 : le renvoi aux 50 pages correspondantes, en local ou en global, grâce à des liens hypertexte (du type <a href="http://www.red_devil.com/on_les_aura.html"> match de barrage</a>). Pour cela on va créer automatiquement une page html listant tous ces liens : il s'agit d'une tâche répétitive.
- Tâche numéro 2 : la transformation des 50 fichiers html (URL) en fichiers au format texte, de façon à pouvoir retrouver les contextes d'utilisation de "barrage" (avec lynx -dump). A nouveau, au lieu de taper 50 fois la même commande, on vous demandra d'automatiser cette tâche.
- Tâche numéro 3 : la possibilité pour un utilisateur d'interroger tous les fichiers liés à un usage spécifique de "barrage" pour retrouver le contexte immédiat de ce mot, que ce dernier soit écrit en lettres majuscules ou minuscules (avec egrep -i). Il s'agit bien encore d'automatisation.
Pré-requis :
Tâche numéro 1 :
Contexte de travail : l'arborescence construite pour ce travail
Vous pourrez récupérer cette arborescence "minimale" et vous en servir pour la suite de votre travail : arbo.zip
Solution n°1 : via 1 shell script (fait-tableau-v1.sh à récupérer ici)
- écriture d'un shell script avec un éditeur de texte (emacs, vi, bloc-notes) pour automatiser la tâche consistant à faire un tableau html contenant toutes les URL illustrant un certain usage du mot "barrage"
shebang #!/bin/bash commentaires indiqués avec # en début de ligne #ici, commentaire echo "hello world"; read data; le programme stocke ce que l'utilisateur a rentré dans la variable $data boucle simple "for [fic] in [liste ou commande entre apostrophes inversées]" { tâche à accomplir} #!/bin/bash echo "donne nom de fichier contenant les liens http"; #c'est la liste des pages wgettées read fic; #le programme connait le fichier de liens sous le nom $fic
echo "donne nom de fichier html où stocker ces liens"; #c'est le tableau de liens à créer read tablo; #enregistre nom donné par utilisateur dans la variable $tablo echo "<html><head><title>tableau de liens</title></head><body><table border=\"1\">" > $tablo; #code de début de tableau
for nom in `cat $fic` #$nom est la variable dans laquelle sera stocké chaque lien
{
echo "<tr><td>$nom</td></tr>" >> $tablo; #création d'un tableau à une colonne et autant de lignes qu'il y a d'URL
}
echo "</table></html>" >> $tablo; #code de fin de tableau
#le fichier dont le nom correspond à la variable tablo est maintenant créé, ouvrez-le
Solution n°2 : via 1 script perl (fait-tableau-v2.pl à récupérer ici)
#!/usr/bin/perl
print "Donnez le nom de fichier contenant les liens http \n"; #c'est la liste des pages wgettées
$filehttp=<STDIN>; #lecture de ce que l'utilisateur entre au clavier et association à une variable
print "$filehttp";
chomp($filehttp); #on supprime le retour chariot
print "Donnez un nom de fichier html où stocker ces liens \n"; #c'est la liste des pages wgettées
$filehtml=<STDIN>;
print "$filehtml";
chomp($filehtml);
open(FILEIN,"$filehttp"); # ouverture du fichier des pages wgettées en lecture
open(FILEOUT,">$filehtml"); # ouverture du fichier HTML en écriture
print FILEOUT "<html>\n<head>\n<title>tableau de liens</title>\n</head><body>\n<table border=\"1\">\n" ; #code de début de tableau
while ($ligne=) {
print $ligne;
chomp($ligne);
print FILEOUT "<tr><td>$ligne</td></tr>";
}
print FILEOUT "\n</table>\n</body>\n</html>"; #code de fin de tableau
close(FILEIN);
close(FILEOUT);
Trace de l'exécution :
Résultats produits :
le fichier "url-hydro-v1.html"
le fichier "url-hydro-v2.html"
Votre travail :
Que faut-il rajouter au code précedent pour que le tableau d'URL construit permette un accès direct à chacune des URL listées (via un lien hypertexte) ? (A faire sur les 2 scripts)
Que faut-il rajouter au code pour que le tableau contienne 2 colonnes : une contenant les URLs et l'autre contenant un lien vers la page aspirée et associée à chaque URL.
Modifiez le script perl pour lancer à la fois, la récupération des fichiers via wget et la création du tableau (on utilisera par exemple la commande perl "system").
Tâches numéro 2 et 3 :
- Tâche numéro 2 : "Automatisation des tâches" (étape 2)
- Tâche numéro 3 :"Automatisation des tâches" (étape 3)
Lecture indispensable...
- Guide avancé d'écriture des scripts Bash, sur le Site de traduction français pour le guide ABS Advanced Bash Scripting Guide
(Lien : Version 5 http://abs.traduc.org/abs-5.0-fr/)
Une exploration en profondeur de l'art de la programmation shell. Ce tutoriel ne suppose aucune connaissance de la programmation de scripts, mais permet une progression rapide vers un niveau intermédiaire/avancé d'instructions tout en se plongeant dans de petites astuces du royaume d'UNIX. Il est utile comme livre, comme manuel permettant d'étudier seul, et comme référence et source de connaissance sur les techniques de programmation de scripts. Les exercices et les exemples grandement commentés invitent à une participation active du lecteur avec en tête l'idée que la seule façon pour vraiment apprendre la programmation de scripts est d'écrire des scripts.
On regardera en particulier : la seconde partie, le chapitre 10, le chapitre 14, etc.