Récapitulatif de la séance 5 (18/10/2017)
PLAN
2 outils
3 commandes
n tableaux de 3 colonnes
I Présentation de 2 outils
GroMoteur et Le Trameur
1.1 GroMoteur
Outil de création de corpus. Il permet de crawler des pages à partir des listes d'URLs. En fait, la première phase de notre projet est de simulier en gros un GroMoteur.
1.2 Le Trameur
Nous allons utiliser cet outil pour analyser notre corpus à la fin du projet.Cette séance, il s'agit notamment de tester nos fichier d'urls avec le module petitMoteur dans Le Trameur.
Nous l'avons testé sur Windows.
Les textes aspirés sont entourés d'une pair de balise <url> et </url>.
II Présentation de 3 commandes
wget, curl et diff
2.1 wget
Description : wget est une commande non interactif pour télécharger des fichiers depuis le Web. Il rédirige par défaut le fichier dans le répertoire courant.
Utilisation : wget [OPTION] [URL]
Exemple : Nous l'avons testé avec l'url de page d'accueil du Trameur. Cette page est rédirigée par défaut dans notre répertoire courant avec son nom original.
~/Documents/20172018-S1/Projet_Encadre/COURS/Seance1018$ wget http://www.tal.univ-paris3.fr/trameur/
--2017-10-22 20:04:23-- http://www.tal.univ-paris3.fr/trameur/
Resolving www.tal.univ-paris3.fr (www.tal.univ-paris3.fr)... 195.221.71.50
Connecting to www.tal.univ-paris3.fr (www.tal.univ-paris3.fr)|195.221.71.50|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 95057 (93K) [text/html]
Saving to: ‘index.html’
index.html 100%[==========================================================================================================================================>] 92,83K --.-KB/s in 0,06s
2017-10-22 20:04:23 (1,50 MB/s) - ‘index.html’ saved [95057/95057]
~/Documents/20172018-S1/Projet_Encadre/COURS/Seance1018$ ls
index.html Notes1018.odt
2.2 curl
Description : curl est une commande pour télécharger des fichiers et d'afficher son contenu dans la console, i.e. stdOUT. C'est-à-dire que nous avons besoins de le rédiriger si necessaire.
Utilisation : curl [OPTION] [URL]
Exemple: Nous l'avons testé avec le même url que nous avons utilisé sufra. Nous l'avons rédirigé avec un nouveau nom dans le même répertoire pour fair une comparaison à l'étape suivante.
~/Documents/20172018-S1/Projet_Encadre/COURS/Seance1018$ curl http://www.tal.univ-paris3.fr/trameur/ > curl_test.html
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 95057 100 95057 0 0 93465 0 0:00:01 0:00:01 --:--:-- 93560
~/Documents/20172018-S1/Projet_Encadre/COURS/Seance1018$ ls
curl_test.html index.html Notes1018.odt
2.3 diff
Description : comparer des fichiers ligne par ligne
Utilisation : diff [OPTION] [FICHIER1] [FICHIER2[OPTION] [URL]] ...
Exemple : Nous avons comparé les deux fichiers que nous avons eu récupérés des étapes précédentes. Il ne renvoit aucune information, ce qui veut dire que les deux fichiers sont identiques.
~/Documents/20172018-S1/Projet_Encadre/COURS/Seance1018$ diff index.html curl_test.html
~/Documents/20172018-S1/Projet_Encadre/COURS/Seance1018$
III Création de n tableaux de 3 colonnes
Les consignes :
-. Il faut lire un fichier d'URLs puis plusieurs ==> réalisé le 18/10/2017
-. Il faut afficher chaque URL dans une ligne d'un tableau (1 colonne au départ) ==> réalisé le 12/10/2017 cf le blog précédent
-. Il faut ajouter une colonne pour numéroter les URLs ==> réalisé le 18/10/2017
-. Il faut créer un lien hypertexte pour chaque URL ==> réalisé le 12/10/2017 cf le blog précédent
-. Il faut ajouter une colonne contenant "la page aspirée" pour chaque URL ==> réalisé le 18/10/2017
-. Il faut afficher chaque URL dans une ligne d'un tableau (1 colonne au départ) ==> réalisé le 12/10/2017 cf le blog précédent
-. Il faut ajouter une colonne pour numéroter les URLs ==> réalisé le 18/10/2017
-. Il faut créer un lien hypertexte pour chaque URL ==> réalisé le 12/10/2017 cf le blog précédent
-. Il faut ajouter une colonne contenant "la page aspirée" pour chaque URL ==> réalisé le 18/10/2017
Note : Nous avons remarqué que de multiples tentatives de téléchargement avec des commandes risquaient un blocage par certains sites. Nous avons donc décidé de ne tester notre script qu'avec quelques petities listes d'urls aléatoires. Une fois que nous aurions finalement complété ce script, nous allons l'exécuter avec nos propres fichiers d'urls.
L'arborescence de notre répertoire de travail :
~/Documents/20172018-S1/Projet_Encadre/PROJET_MOT_SUR_LE_WEB$ tree -d
.
├── CONTEXTES
├── DUMP-TEXT
├── IMAGES
├── PAGES-ASPIREES
├── PROGRAMMES
├── TABLEAUX
└── URLS
7 directories
~/Documents/20172018-S1/Projet_Encadre/PROJET_MOT_SUR_LE_WEB$ tree -d
.
├── CONTEXTES
├── DUMP-TEXT
├── IMAGES
├── PAGES-ASPIREES
├── PROGRAMMES
├── TABLEAUX
└── URLS
7 directories
EXECUTION :
~/Documents/20172018-S1/Projet_Encadre/PROJET_MOT_SUR_LE_WEB$ bash ./PROGRAMMES/CreationTableaux_v_3col.sh < ./PROGRAMMES/parametres
Création d'une page html contenant trois colonnes
INPUT : Le nom du repertoire contenant les fichiers d'url : ./URLS
OUTPUT : Le nom du fichier html en sortie : ./TABLEAUX/Tableaux_URL
OUTPUT : Le nom du répertoire stockant les pages aspirées : ./PAGES-ASPIREES
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 101k 0 101k 0 0 261k 0 --:--:-- --:--:-- --:--:-- 262k
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 100k 0 100k 0 0 418k 0 --:--:-- --:--:-- --:--:-- 420k
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Toal Spent Left Speed
100 53158 0 53158 0 0 94652 0 --:--:-- --:--:-- --:--:-- 94587
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 97507 100 97507 0 0 81807 0 0:00:01 0:00:01 --:--:-- 81869
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 47390 0 47390 0 0 57423 0 --:--:-- --:--:-- --:--:-- 57372
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 43151 0 43151 0 0 53233 0 --:--:-- --:--:-- --:--:-- 53207
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 102k 0 102k 0 0 161k 0 --:--:-- --:--:-- --:--:-- 161k
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 222k 0 222k 0 0 918k 0 --:--:-- --:--:-- --:--:-- 922k
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 87944 100 87944 0 0 79323 0 0:00:01 0:00:01 --:--:-- 79371
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 101k 0 101k 0 0 445k 0 --:--:-- --:--:-- --:--:-- 447k
Fin de création des tableaux.
Résultat (partiel) : les pages aspirées
~/Documents/20172018-S1/Projet_Encadre/PROJET_MOT_SUR_LE_WEB$ ls ./PAGES-ASPIREES/
1-1.html 1-2.html 2-1.html 2-2.html 2-3.html 2-4.html 3-1.html 3-2.html 3-3.html 3-4.html
Explication du script
Initiation des 3 variables à partir du fichier "parametres"
Initiation des 3 variables à partir du fichier "parametres"
echo "Création d'une page html contenant trois colonnes";
read repertoire;
read nom_html;
read repertoire_aspiree;
echo "INPUT : Le nom du repertoire contenant les fichiers d'url : $repertoire";
echo "OUTPUT : Le nom du fichier html en sortie : $nom_html";
echo "OUTPUT : Le nom du répertoire stockant les pages aspirées : $repertoire_aspiree";
Initiation du compteur
compteur_tableaux=1;
compteur_lien=1;
2 boucles :
La
boucle externe permet de lire fichier par fichier et de créer n
tableaux (n = le nombre de fichiers dans le répertoire ./URLS)
La boucle interne permet de traiter ligne par ligne des urls dans chaque fichier
for fichier_url in `ls $repertoire` # la première boucle permettant de lire fichier par fichier et de créer n tableaux (n = le nombre de fichiers dans le répertoire ./URLS)
do
echo -e "\t<table border=\"1\" align=\"center\" width=\"66%\" bordercolor=\"#47baae\">" >> $nom_html;
echo -e "\t\t<tr bgcolor=\"#47baae\"><th colspan=\"3\">\n\t\t\t$fichier_url</th></tr>" >> $nom_html;
echo -e "\t\t<tr>\n\t\t\t<th align=\"center\" width\"10%\">N°</th>" >> $nom_html;
echo -e "\t\t\t<th width=\"80%\" align=\"center\">Lien</a></th>" >> $nom_html;
echo -e "\t\t\t<th align=\"center\">Page Aspirée</th>\n\t\t</tr>" >> $nom_html;
compteur_lien=1;
for lien in `cat $repertoire/$fichier_url` # la seconde boucle permettant de traiter ligne par ligne des urls dans chaque fichier
do
curl $lien > $repertoire_aspiree/$compteur_tableaux-$compteur_lien.html; # aspirer des pages html et les rédiriger dans le répertoire ./PAGE-ASPIREES
###### écrire ligne par ligne et colonne par colonne le numéro, l'url et le lien vers la page aspirée dans chaque tableau ######
echo -e "\t\t<tr >\n\t\t\t<td align=\"center\">$compteur_lien</td>" >> $nom_html;
echo -e "\t\t\t<td><a href="$lien">$lien</a></td>" >> $nom_html;
echo -e "\t\t\t<td align=\"center\"><a href=".$repertoire_aspiree/$compteur_tableaux-$compteur_lien.html">$compteur_tableaux-$compteur_lien</a></td>\n\t\t</tr>\n" >> $nom_html;
let compteur_lien++;
done
echo "</table>" >> $nom_html;
echo -e "<hr width=\"66%\" size=\"6\" color=\"#47baae\"/>" >> $nom_html; #horizontal rule
let compteur_tableaux++;
done
Aspirer des pages html et les rédiriger dans le répertoire ./PAGE-ASPIREES
curl $lien > $repertoire_aspiree/$compteur_tableaux-$compteur_lien.html; # aspirer des pages html et les rédiriger dans le répertoire ./PAGE-ASPIREES
Ecrire ligne par ligne et colonne par colonne le numéro, l'url et le lien vers la page aspirée dans chaque tableau
echo -e "\t\t<tr >\n\t\t\t<td align=\"center\">$compteur_lien</td>" >> $nom_html;
echo -e "\t\t\t<td><a href="$lien">$lien</a></td>" >> $nom_html;
echo -e "\t\t\t<td align=\"center\"><a href=".$repertoire_aspiree/$compteur_tableaux-$compteur_lien.html">$compteur_tableaux-$compteur_lien</a></td>\n\t\t</tr>\n" >> $nom_html;
Incrémenter le compteur à la fin de chaque itération
let compteur_tableaux++;
let compteur_lien++;
MISE A JOUR de la version 18/10/2017
# i. lire plusieurs fichiers d'urls# ii. stocker les urls dans des tableaux différents
# iii. ajouter deux nouvelles colonnes (numéro et page_aspirée)
# iv. ajouter un paramètre pour stocker des pages aspirées
Script complet
#!/bin/bash
#PATH=$PATH:~/home/.../PROJET_MOT_SUR_LE_WEB
#./PROGRAMMES/CreationTableaux_v_3col.sh
#EXECUTION
#bash ./PROGRAMMES/CreationTableaux_v_3col.sh < ./PROGRAMMES/parametres
#VERSION 20171018
#MISE A JOURS :
# i. lire plusieurs fichiers d'urls
# ii. stocker les urls dans des tableaux différents
# iii. ajouter deux nouvelles colonnes (numéro et page_aspirée)
# iv. ajouter un paramètre pour stocker des pages aspirées
################################################################
#parametre : ./PROGRAMMES/parametres
################################################################
echo "Création d'une page html contenant trois colonnes";
read repertoire;
read nom_html;
read repertoire_aspiree;
echo "INPUT : Le nom du repertoire contenant les fichiers d'url : $repertoire";
echo "OUTPUT : Le nom du fichier html en sortie : $nom_html";
echo "OUTPUT : Le nom du répertoire stockant les pages aspirées : $repertoire_aspiree";
######debut de la page HTML finale ######
echo '<!DOCTYPE html>' >$nom_html;
echo -e "<html>\n<head>\n\t<meta charset=\"utf8\">\n\t<title>Tableaux de liens</title>\n</head>\n<body>" >> $nom_html;
echo -e "\t<h2 align = \"center\">Tableau de liens</h2>" >> $nom_html;
###### 2 iterateurs : 1 pour tableau (compteur_tableaux), 1 pour ligne (compteur_lien) ######
compteur_tableaux=1;
for fichier_url in `ls $repertoire` # la première boucle permettant de lire fichier par fichier et de créer n tableaux (n = le nombre de fichiers dans le répertoire ./URLS)
do
echo -e "\t<table border=\"1\" align=\"center\" width=\"66%\" bordercolor=\"#47baae\">" >> $nom_html;
echo -e "\t\t<tr bgcolor=\"#47baae\"><th colspan=\"3\">\n\t\t\t$fichier_url</th></tr>" >> $nom_html;
echo -e "\t\t<tr>\n\t\t\t<th align=\"center\" width\"10%\">N°</th>" >> $nom_html;
echo -e "\t\t\t<th width=\"80%\" align=\"center\">Lien</a></th>" >> $nom_html;
echo -e "\t\t\t<th align=\"center\">Page Aspirée</th>\n\t\t</tr>" >> $nom_html;
compteur_lien=1;
for lien in `cat $repertoire/$fichier_url` # la seconde boucle permettant de traiter ligne par ligne des urls dans chaque fichier
do
curl $lien > $repertoire_aspiree/$compteur_tableaux-$compteur_lien.html; # aspirer des pages html et les rédiriger dans le répertoire ./PAGE-ASPIREES
###### écrire ligne par ligne et colonne par colonne le numéro, l'url et le lien vers la page aspirée dans chaque tableau ######
echo -e "\t\t<tr >\n\t\t\t<td align=\"center\">$compteur_lien</td>" >> $nom_html;
echo -e "\t\t\t<td><a href="$lien">$lien</a></td>" >> $nom_html;
echo -e "\t\t\t<td align=\"center\"><a href=".$repertoire_aspiree/$compteur_tableaux-$compteur_lien.html">$compteur_tableaux-$compteur_lien</a></td>\n\t\t</tr>\n" >> $nom_html;
let compteur_lien++;
done
echo "</table>" >> $nom_html;
echo -e "<hr width=\"66%\" size=\"6\" color=\"#47baae\"/>" >> $nom_html; #horizontal rule
let compteur_tableaux++;
done
###### fin de la page HTML finale ######
echo -e "</body>\n</html>" >> $nom_html;
echo "Fin de création des tableaux.";
RESULTATS
Tableaux
Fichier html
Une des pages originales (colonne 2)
Le fichier local correspondant (colonne 3 : page aspirée)
Références
https://www.tutorialspoint.com/unix_commands/curl.htm
http://www.linux-france.org/article/man-fr/man1/diff-1.html