le temps urge

18122008

  Comme je suis trop chargée (boulot, formation parallèle), les deux dernières semaines je n'étais pas trop active pour l'avancement du projet. En plus je n'ai pas bien choisi le moment de tomber malade. Pendant les vacances de Noël je me rattraperai.

A cette étape notre projet se sépare en deux: un projet pour les mots en français et en bulgare et un projet pour les mots en français et en arabe. Ainsi chacun travaillera sur la langue qu'il parle.

Je suis en train d'imbriquer les boucles dans laquelles se fait l'aspiration et le dumpage des sites. Pour transmettre au minigrepmultilingue l'encodage de la page: l'option [/o] , qu'on met à la fin de l'expression régulière pour faire la recherche de l'encodage une seule fois, ne marche pas sur mon cygwin. Pas d'explication. J'ai bon cherché. Le problème est que certain sites ont l'instruction <……….charset=bla-bla> deux fois dans le code source HTML. Solution rudimentaire - essayer de faire une vérification de la variable affectée avec la valeur de $1 (le résultat des occurrences) et de la modifier si elle est plus longue que attendu.

J'ai fait un mini-programme en Perl pour tester le module HTML::Entities. Je suis déçue. Il ne marche pas correctement sur le bulgare. Apparemment ses outils ne prennent pas en compte toutes les entité existantes. Le groupe “&#” précèdent l'ASCII code du symbole. Il faux juste faire une correspondance. J'ai trouvé un très bon site pour tout décodage du cyrillique:

http://2cyr.com/decode/

Mais, je laisse pour une autre fois le développement d'un programme qui convertit une entité en symbole visible standard (Unicode par exemple). Je rechercherai de nouveaux sites bulgares qui ne contiennent pas d'entités.

Normalement le script est écrit, il reste de le faire marcher et d'ajouter des nuages…avant de construire le site officiel de notre …aventure ….dans le monde des mots sur le web…

Ginka




modules perl intéressants

11122008

Certaines de nos pages web contient des entité HTML. Ce sont des expressions qui commencent par “&#”, suivis de quelques chiffres (3 pour le caractères grèques, 4 pour les cyrilliques, 5 pour les chinois, d'après ce que j'ai remarqué). Dans ce formats elles sont en décimal précédé de “&#”. C'est un moyen de visualiser n'importe quel caractère.

Pour faire l'opération de décodage des entités j'ai trouvé un module en perl HTML::Entities dans la classe HTML-Parser-3.59.

Pour l'installer, il suffit de se placer dans le root et d'écrire:

$ perl Makefile.PL LIB=~/local/lib

et après:

$ make
$ make test
$ make install

ou bien de le télécharger directement:

perl -MCPAN -e 'install HTML::Parser'.

Comme une partie des sites ne sont pas en UTF-8, il faudra les trasncoder. Le module  HTML-Encoding-0.60 permet de déterminer l'encodage de la page HTML ou XML.

La suite va montrer si j'arrive à integrer les modules dans le script.

Ginka




Deuxième script

19112008

Notre deuxième script doit aspirer les pages web correspondant aux urls et les sauvegarder dans le répertoire PAGES-ASPIREES.

Nous utilison la commande wget -0 dans le format:

wget -O ./PAGES-ASPIREES/$i.html $nom

'nom' contient le url lu depuis les trois fichiers TXT avec les sites par langue, 'i' est incrémenté après chaque lecture de url.

Dans les boucles FOR du premier script, nous avons rajouté cette commande. Aussi, nous avons modifié la présentation des tableaux par langue en rajoutant une colonne suplémentaire avec un lien vers la page aspirée.

Pour rendre les liens cliquables, dans ce deuxième script, aussi comme dans le premier, nous avons utilisé dans le boucles FOR:

<a href=\”$nom\”>$nom</a>

qui est ajouté dans le code html de nos pages HTML avec les tableaux.

Le code du deuxième script, sous réserve de modification est :

#!/bin/bash
#initialise les variables
fic1=./URLS/urls_fr.txt;
fic2=./URLS/urls_bg.txt;
fic3=./URLS/urls_ar.txt;
tablo=./TABLEAUX/try_aspirer_v1.html;
#commence la construction du fichier avec les liens des pages aspirées
echo “<html><head><title>tableau de liens</title></head><body bgcolor=\”#000000\”><font COLOR=\”#FFFFFF\”>” > $tablo;
#
# crée le premier tableau ;
echo “<table width=\”80%\” border=\”1\” bgcolor=\”silver\”>” >> $tablo;
i=1;
#écrit le titre du tableau sur trois cellules
echo “<tr><th colspan=\”3\”>Boîte en francais</th></tr>” >> $tablo;
for nom in `cat $fic1`
{
wget -O ./PAGES-ASPIREES/$i.html $nom;
echo “<tr><td width=\”10%\”>url $i</td><td width=\”50%\”><a href=\”$nom\”>$nom</a></td><td width=\”40%\”><a href=\”../PAGES-ASPIREES/$i.html\”>PAGE ASPIREE $i</a></td></tr>” >> $tablo;
let “i = i + 1″;
};
echo “</table>” >> $tablo;
echo “<p><hr bgcolor=\”blue\”></p>” >> $tablo;
#
# crée le deuxième tableau;
echo “<table width=\”80%\” border=\”1\” bgcolor=\”silver\”>” >> $tablo;
#écrit le titre du tableau sur trois cellules
echo “<tr><th colspan=\”3\”>Boîte en bulgare</th></tr>” >> $tablo;
for nom in `cat $fic2`
{
wget -O ./PAGES-ASPIREES/$i.html $nom;
echo “<tr><td width=\”10%\”>url $i</td><td width=\”50%\”><a href=\”$nom\”>$nom</a></td><td width=\”40%\”><a href=\”../PAGES-ASPIREES/$i.html\”>PAGE ASPIREE $i</a></td></tr>” >> $tablo;
let “i = i + 1″;
};
echo “</table>” >> $tablo;
echo “<p><hr bgcolor=\”blue\”></p>” >> $tablo;
#
# crée le troisième tableau;
echo “<table width=\”80%\” border=\”1\” bgcolor=\”silver\”>” >> $tablo;
#écrit le titre du tableau sur trois cellules
echo “<tr><th colspan=\”3\”>Boîte en arabe</th></tr>” >> $tablo;
for nom in `cat $fic3`
{
wget -O ./PAGES-ASPIREES/$i.html $nom;
echo “<tr><td width=\”10%\”>url $i</td><td width=\”50%\”><a href=\”$nom\”>$nom</a></td><td width=\”40%\”><a href=\”../PAGES-ASPIREES/$i.html\”>PAGE ASPIREE $i</a></td></tr>” >> $tablo;
let “i = i + 1″;
};
echo “</table></body></html>” >> $tablo;




Problème \r

19112008

Ginka:

J'ai installé cygwin sur mon ordinateur, mais il paraît qu'il y a un problème de marque du retour chariot. 

J’ai fait plusieurs essais de faire marcher le script en utilisant la commande dos2unix sans résultat. 

Alors, j’ai trouvé une autre commande : 

tr –d ’\r’ < nom_script.sh > nom_script_modeunix.sh 

qui efface les marques de retour de chariot à la façon Windows et le script est réécrit dans un nouveau fichier. 




Premier script

19112008

L’exercice est d’écrire un script qui puisse créer une page en format HTML avec trois tableaux pour chacune des langues. Chaque tableau doit contenir deux colonnes : un url d’un site et un numéro unique par site.

Nous avons voulu expérimenter avec les couleurs du fond et du text dans la page ainsi créée, c’est pourquoi nous avon mis dans la partie <body> du code html

bgcolor=#000000><font COLOR=#FFFFFF>

Aussi d’après nos « critères de style », nous avons travaillé un peu la couleur et la taille des tableaux en utilisant dans la partie <table> width=80% border=1 bgcolor=silver.

(Nous nous réservons la possibilité de modifier encore ces paramètres par la suite !).

Dans le script, nous utilisons trois identificateurs fic1, fic2 et fic3 pour indiquer les trois fichiers TXT avec les urls, qui se trouvent dans le répertoire . /TABLEAUX.

A l’aide de trois boucle FOR, par l’instruction ‘echo’, nous ajoutons dans une variable ‘tablo’ le code HTML à ajouter dans un fichier qui va être créer dans le répertoire ./TABLEAUX.

Pour le numéro du site, nous utilision la variable ‘i’.

Notre script, sous réserve de modification est le suivant:

#!/bin/bash
fic1=./URLS/urls_fr.txt;
fic2=./URLS/urls_bg.txt;
fic3=./URLS/urls_ar.txt;
tablo=./TABLEAUX/tableaux_1.html;
#commence la construction du fichier .html avec les 3 tableaux;
echo “<html><head><title>tableau de liens</title></head><body bgcolor=\”#000000\”><font COLOR=\”#FFFFFF\”>” > $tablo;
#
# crée le premier tableau;
echo “<table width=\”80%\” border=\”1\” bgcolor=\”silver\”>” >> $tablo;
i=1;
#
#écrit le titre du tableau sur deux cellules
echo “<tr><th colspan=\”2\”><font COLOR=\”white\”>Boîte en francais</FONT></th></tr>” >> $tablo;
#
#ajoute dans le tableau des lignes numérotées avec les adresses urls en français
for nom in `cat $fic1`
{
echo “<tr><td>$i</td><td><a href=\”$nom\”><font COLOR=\”white\”>$nom</FONT></a></td></tr>” >> $tablo;
let “i = i + 1″;
};
echo “</table>” >> $tablo;
echo “<p><hr bgcolor=\”blue\”></p>” >> $tablo;
#
# crée le deuxième tableau;
echo “<table width=\”80%\” border=\”1\” bgcolor=\”silver\”>” >> $tablo;
#
#écrit le titre du tableau sur deux cellules
echo “<tr><th colspan=\”2\”>Boîte en bulgare</th></tr>” >> $tablo;
#
#ajoute dans le tableau des lignes numérotées avec les adresses urls en bulgare
for nom in `cat $fic2`
{
echo “<tr><td>$i</td><td><a href=\”$nom\”>$nom</a></td></tr>” >> $tablo;
let “i = i + 1″;
};
echo “</table>” >> $tablo;
echo “<p><hr bgcolor=\”blue\”></p>” >> $tablo;
#
# crée le troisième tableau;
echo “<table width=\”80%\” border=\”1\” bgcolor=\”silver\”>” >> $tablo;
#
#écrit le titre du tableau sur deux cellules
echo “<tr><th colspan=\”2\”>Boîte en arabe</th></tr>” >> $tablo;
for nom in `cat $fic3`
{
echo “<tr><td>$i</td><td><a href=\”$nom\”>$nom</a></td></tr>” >> $tablo;
let “i = i + 1″;
};
echo “</table></body></html>” >> $tablo;
 




Arborescence

19112008

Après avoir trouvé une cinquantaine de sites contenant le mot “boîte” en français, bulgare et arabe nous avons procédé à la création de l'arborescence de l'espace de notre projet. Pour préparer l'environnement du projet, nous avons utilisé le script suivant: 

#!/bin/bash
# avant de lancer ce script on se place dans le repertoire du projet
# par exemple :
# cd /cygdrive/d/MASTER-TAL
# mkdir PROJET-MOT-SUR-LE-WEB
# cd PROJET-MOT-SUR-LE-WEB
# on peut desormais creer l'arborescence de travail
mkdir ./CONTEXTES;
mkdir ./DUMP-TEXT;
 mkdir ./IMAGES;
mkdir ./PAGES-ASPIREES;
mkdir ./PROGRAMMES;
mkdir ./TABLEAUX;
mkdir ./URLS;
# le dossier URLS contiendra le fichier initial d'URLs

Le résultat de l'exécution du script est le suivant:

 ph1.jpg


 




Choix du mot

8102008

Aujourd'hui nous avons choisi le mot “boîte” dans 6 sens:

  • boîte comme un récipient d'objets:

             1)boîte à outils, 2)boîte de conserve, 3)boîte aux lettres, 4)boîte éléctronique

  • boîte comme lieu de rassemblement de gens:

5)comme entreprise, 6)boîte de nuit

  • dans le contexte mécanique:

7)boîte de vitesse,  8)boîte noire

  • dans le contexte de la médecine:

9)boîte cranienne

  • comme un jouet:

10)boîte à meuh

Il reste à trouver les 50 sites qui se rapportent à “boîte” en français, arabe et bulgare.