Modifications dans le script

Bonjour!

J´ai révisé encore une fois le script et finalement j´ai décidé de faire une petite modification.

En fait, j´ai répéré que dans la version précédente, lorsque le programme ne trouvait pas l´encodage du fichier, quand on le cherchait dans la page aspirée avec la commande egrep, on vérifiait juste ensuite s´il se trouvait parmi les encodages de la liste iconv pour après le transcoder. Mais si l´encodage est déjà UTF-8? Alors on n´a pas besoin même d´aller chercher l´encodage dans la liste iconv.

Chaque fois qu´on allait chercher si la page aspirée existait pour chercher l´encodage, on avait deux options, soit on trouvait l´encodage et on faisait iconv, soit on ne récupérait pas d´encodage et il n´y avait rien à faire. Dans cette nouvelle version, j´ai rajouté une instruction de test, on a donc trois options: soit l´encodage est UTF-8, et alors on procède au téléchargement d´URL et les suivants traitements, soit on trouve un encodage mais il n´est pas UTF-8, donc il faut le transcoder, soit on trouve rien.

Voilà ci-dessous la liste des instructions que j´ai rajouté :

nueva-version

Ensuite, j´ai essayé de rédiger un schéma du script pour voir qu´il n´y a pas des erreurs dans ma logique…

1. ARBORESCENCE DU TRAVAIL

On a créé un dossier qui s’appelle PROJET-MOT-SUR-LE-WEB. À l’intérieur, on a créé de sous-répertoires qui contiennent:
URLS: trois fichiers, chacun contenant les URLS dans chacune des langues avec lesquelles on a travaillé: espagnol, français et khmer.
PROGRAMMES: le script
PAGES-ASPIREES: les pages aspirées de chaque URL.
TABLEAUX: le tableau html que notre programme va créer.
MOTIFS: on a aussi trois fichiers, chacun avec le motif dans une langue.
Les contenus sont les suivants:
-espagnol: mujer(es)?
-français: femme(s)?
-khmer: (ស្រ្តី)?|(ស្រី)?

DUMP-TEXT: contenu textuel de chaque URL.
CONTEXTES: chaque fichier contient les lignes où on a trouvé un de notres motifs dans chaque URL.
IMAGES

2. LECTURE DES PARAMÈTRES
Au début de notre programme, on va lire les donnéés dont on a besoin pour l´exécuter. Toutes ces donnéés se trouvent dans un fichier qui s’appelle « parametres » et qui se trouve dans notre repertoire PROJET-MOT-SUR-LE-WEB. Le contenu de celui ci est:

-> ./URLS

->./TABLEAUX/tableau.html

->./MOTIFS
La commande read va lire chacune des lignes et va associer la variable DOSSIER_URLS au chemin ./URLS, fichier_tableau au chemin ./TABLEAUX/FICHIER_TABLEAU, et MOTIFS à ./MOTIFS.
3. CORPS DU SCRIPT
On initialise la variable cpttableau, qui va aller depuis 1 à 3, chaque numéro pour une des langues.

3.1 Traitements des URLs
-Premier boucle: for fichier in $(ls $DOSSIER_URLS): la variable $fichier va prendre comme valeurs chaque fichier des URLS qu’il y a dans ce dossier.
-On initialise la variable compteur, qui commence à 0 et va compter chaque URL.

-Affichage de la table: caractéristiques, colonnes…

-Lecture des URLS: on va créer un autre boucle à l’intérieur du dernier boucle, cette fois-ci, ce deuxième boucle va lire chaque URL de chaque fichier contenant les URLS.
-Récupération du header http: si on obtient le code 200 cela veut dire que tout se passe bien…

-Récupération de la page aspirée avec curl.
-Détection d’encodage: on a besoin d’UTF-8. Notre première option pour trouver l’encodage de chaque URL est de chercher dans la page html la balise « <charset=encodage> » et capturer ce qui se trouve après le symbole égal. Plusieurs choses peuvent arriver…:

1. L’encodage trouvé est UTF-8.

PARFAIT!

-Téléchargement d’URL avec lynx -dump.

-Extraction du contexte: ici on trouve des structures de contrôle pour décider quel est le motif qu’on doit prendre dans chaque cas. Si on se trouve dans le premier tableau, c’est-à-dire, cpttableau vaut 1, le motif sera celui du fichier espagnol, si cpttableau vaut 2, le motif est celui du français, et en dernier lieu, on a le khmer. On utilise egrep pour chercher les motifs et garder les lignes où le mot se trouve dans le fichier CONTEXTE, on va aussi compter le nombre de fois que le motif apparaît dans chaque URL, et en dernier lieu, on va créer un fichier qui contient un index des mots de chaque fichier DUMP et aussi un fichier DUMP-TOTAL où on va stocker le contenu du fichier DUMP TEXT à chaque fois qu’on a téléchargé un fichier DUMP TEXT, et on fera pareil avec les fichiers CONTEXTES.

-Affichage des résultats dans le tableau

2. L’encodage trouve est une chaîne vide. 

2.1 Vérifier si la page aspirée existe. 

2.1.1 Si la page aspirée existe, on va essayer de trouver l’encodage avec la commande file -i suivie de egrep et on recherche le pattern « charset… ».

a) On trouve l’encodage ($encodagePg) avec file -i. On prend la variable $encodagePg :

– Si elle vaut « UTF-8 », alors on peut procédér aux traitements…

– Si elle n´est pas vide mais elle n´est UTF-8 non plus, on cherche si elle se trouve dans la liste de iconv (iconv -l), commande qu’on utilisera pour transcoder le fichier. Elle nécessite d’un encodage source et d´un encodage cible (c’est pour cela qu’on a besoin de l’encodage original de chaque URL). Si l’encodage se trouve dans la liste iconv : on fait le transcodage avec iconv. Si l’encodage ne se trouve pas dans la liste iconv, on peut rien faire.

b) On ne trouve pas l’encodage après avoir lancé la commande file -i: il reste rien à faire.

2.2.2 La page aspirée n’existe pas, elle n´a pas été créé. On ne peut pas faire plus des traitements.

3. La variable encodage n’est pas vide mais pas UTF-8 non plus. Comme on connaît l’encodage, il suffit d’utiliser la commande iconv pour transcoder l’URL. Bien sûr, il faut vérifier auparavant que l’encodage source se trouve dans la liste de iconv. Si l’encodage ne se trouve pas dans la liste, on ne peut pas faire plus des traitements.

 

À bientôt!

Elvira

Laisser un commentaire

Créez un site Web ou un blog gratuitement sur WordPress.com.

Retour en haut ↑