Translate

9 févr. 2017

Encodage (suite)

Comme on l'a mentionné lors de notre article Encodage, nous nous intéresserons dans ce nouvel article aux problèmes liés à l'encodage des pages web  mais aussi aux erreurs d'aspiration de ces pages et nous proposerons ainsi des solutions possibles à ces derniers.

Les fichiers du DUMP s'affichent mal !

Après l'execution du script et la création de notre tableau HTML la première fois, les fichiers du DUMP s'affichaient mal sur le navigateur et sur les fichiers .TXT du DUMP  même après la conversion avec la commande iconv comme on peut le remarquer ci-dessous :

Sur le navigateur 





On a constaté que le problème ne venait pas du script (commande iconv) mais plutôt du navigateur d'abord et puis de l'éditeur de texte.

       Solution

En effet, l'encodage de la plupart des navigateurs en Europe  (Safari pour notre cas) est par défaut ISO Latin 1 et non pas UTF-8. Il faut alors changer l'encodage par défaut dans les paramètres du navigateur en UTF-8. Pour safari, allez dans :préférences-->Avancé-->Encodage par défaut .
Il faut impérativement passer par cette étape avant d'exécuter votre script car le Dump rend le texte brut dans l'encodage par défaut du navigateur Web. 

Mais le problème ne se termine par là. Il faut faire aussi attention à votre éditeur de texte car le problème peut venir de celui-ci aussi: 




Après avoir résolu le problème du navigateur, on s'est rendu compte ensuite que les fichiers .txt du Dump s'affichaient mal aussi.On a du les examiner avec un éditeur hexadécimal  puis on a remarqué que ces derniers étaient bien encodés en UTF-8, on a su alors que le problème venait de notre éditeur de texte.

       Solution

Pour notre cas, on utilisait TextWrangler et Textedit ,  les deux éditeurs n'affichaient pas bien le contenu de notre fichier. On a découvert alors Atom un éditeur de texte puissant qui a pu lire nos fichiers et détecter leur encodage, à savoir UTF-8 comme on peut le voir ci-dessous : 




On vous conseille alors d'utiliser Atom ou Notepade++ comme éditeurs de texte par défaut sur votre machine pour éviter ce genre de problème.

Les fichiers du Dump contiennent que des messages d'erreurs !

Généralement, ce problème est dû à la suppression du site web, ou au fait que le site web ne donne pas la permission d'y accéder ou alors la connexion au réseau internet s'est coupée lors de l'exécution du script ce qui donne le code HTTP 000. 
On vous invite à consulter les codes de status HTTP pour connaître la cause des erreurs.





29 déc. 2016

L'inoubliable " if "

Tous les langages de programmation se ressemblent mais pas vraiment.  En fait, comme nous avions travaillé un peu sur python (Cours de programmation & Algorithme). Nous avions découvert, pour la première fois, ce qu'on appelle le "if" donc un moyen d'exprimer formellement la condition. Malgré que nous avions compris le fonctionnement et avions réussi à coder avec python mais nous avions complètement oublié qu'il ne partage pas la même syntaxe avec Shell Unix. En effet, Nous ne devrions pas oublié. Désormais, on oubliera plus jamais. Nous avions retenu qu'il y a bien ce qu'on appelle un manuel (livre sacré d'un programmeur) qui, pour notre cas, confondions deux langages, était l'ange sauveteur. Il nous a dit "figurez-vous, mes chers, que le mot "then" est important même si ça ne l'est pas sur PYTHON. Les deux crochets sont les anges gardien de votre condition, aimez-les. le "fi" à la fin fera le bonheur de votre "if" au début. L'espace qui n'a pas de sens sur python, réfléchissez-y sur Unix, ça vous fera du bien, je vous assure. Enfin, je vous propose cela

if [[ condition ]]; 
then
 echo " premier jugement"
else
 echo " deuxième jugement"
fi
prenez du temps à bien la retenir, entrainez-vous". 


Essayons-le : 
1) pour age = 13



2 ) pour age = 19


Cela est fait, en terme de syntaxe, nous avons retenu toutes les consignes. 

>>> to be continued. 




REGEX

Qu’est-ce qu’une expression régulière ?

Une expression rationnelle ou expression normale1 ou expression régulière, est, en informatique, une chaîne de caractères, que l’on appelle parfois un motif, qui décrit, selon une syntaxe précise, un ensemble de chaînes de caractères possibles. Les expressions rationnelles sont issues des théories mathématiques des langages formels des années 1940. Leur capacité à décrire avec concision des ensembles réguliers explique qu’elles se retrouvent dans plusieurs domaines scientifiques dans les années d’après-guerre et justifie leur adoption en informatique. Les expressions rationnelles sont aujourd’hui utilisées par les informaticiens dans l’édition et le contrôle de texte ainsi que dans la manipulation des langues formelles que sont les langages de l’informatique.

Application

1)Rechercher /remplacer des séquences spécifiques dans des textes ou des corpus
en formulant un patron(motif)
2)Dans les outils de traitement de texte
Les concordances par exemple permettent en générale des requêtes par expressions régulières
application avec Antconc, le Trameur 
cf cours de Tal


La limite des recherches classiques 

Imaginons que l'on a un texte avec plusieurs mots « Bonjour », et que nous voulons rechercher seulement le premier mot « Bonjour » qui se trouve au début du texte, dans ce cas, nous ne pouvons pas realiser ceci avec la recherche traditionnelle.


Syntaxe

Caractères alternatifs
opérateur: [ ] 
m[oai]t signifie sélectionner les parties du texte où il y a un m, suivi d’une lettre qui est soit o, soit a, soit i, suivi d’un t 

Chaînes de caractères alternatives
opérateur : | 
m[oai]t=mot|mat|mit
par exemple on va chercher Bonjour ou Salut 
Bonjour | Salut

La négation 
opérateur: [^ ] 
 m[^oai]t signifie sélectionner les parties du texte où il y a un m, suivi d’une lettre qui n’est pas un o, ni a, ni i, suivi d’un t

Délimiteurs de chaînes
Les caractères de début de chaîne 
opérateur: ^
^Bonjour sert à sélectionner seulement le mot Bonjour se trouvant au début du texte.

Les caractères de fin de chaîne
opérateur: $
bye$ 

\w caractère de mot 
\b frontière de mot

opérateur: . le symbole . remplace n’importe quel caractère (caractère joker) 
opérateur:\ anti-slash utilisé comme barre d'échappement et de 
déspécialisation

Quantificateur 
opérateur:? représente 0 ou 1 occurrence de l‘expression qui précède 
opérateur: * 0 ou plus occurrences de l’expression qui le précède
opérateur: + au moins une occurrence
opérateur: {} lo{1,3}ng long, loong, looong 






Photo cf https://www.lucaswillems.com/fr/articles/25/tutoriel-pour-maitriser-les-expressions-regulieres

Les opérateurs s ́organisent selon des niveaux de priorité

fermeture * > concaténation > union


Exercices(à corriger)

1.Les mots commençant par polit- 
polit [a-z] *
2.Les mots finissant âr -isme
[a-z] *isme
3.Les formes du verbe écrire
écri[st(vons)(vez)(vent)]
4.Les déclinaisons des verbes finissant par -er/ir
[e (es)(e)(ons)(ez)(ent)] 
[st(ssons)(ssez)(ssent)]
5.Adresses email
[a-z0-9._-]+@[a-z0-9._-]{2,}\.[a-z]{2,4}

[a-z0-9._-] signifie les lettre, chiffres, tirets, underscores possible dans l’adresse mail 
+pour dire qu’il y a au moins un caractère dans le chrochet

{2,}une suite de lettres, chiffres, points, tirets, au moins deux fois

Script de Séance4

I Comment le programme s'exécute

Au bout d'une cinquantaine de liens URL collectés manuellement, nous sommes censé obtenir un tableau qui contient 8 huit colones pour chaque langues étudiées.  

1)Lire depuis un fichier les listes d'URL et mettre les résultats dans le fichier_tableau

D’abord, les commandes "read" et "echo" nous permettent de lire des paramètres, $ est pour renvoyer la valeur de variable dans "read", DOSSIERURLS est input et fichier_tableau est output.





2)Régler l'affichage des tableaux
La deuxième partie est pour l’affichage des tableaux, il faut mettre compteur "cptableau=1" avant le boucle, et on va commencer le premier boucle pour traiter chaque fichier dans le dossier.


















Si on exécute cette partie de code, on aura l’affichage ci-dessous:





Pourtant il faut pas oublier de fermer les balises de "body" et de "html" à la fin, sinon on vera l'erreur ci-dessous:

La raison est bien expliqué sur notre article "je m'appelle HTML".

3)Aspirer des pages associées aux URLS avec "curl" et détecter leur encodage





si E=UTF8 
sinon on fais rien

4)faire ceci pour chaque liste d'URL



II Tester et améliorer les script



Voici le tableau en chinois


Il y a  pas mal de liens sans résultat pour les DUMP initial et CONTEXTE UTF-8, pour résoudre ce problème, on va voir plus de détails sur chaque lien, on prend lien n°2 comme exemple





Ici, on voit bien que le lien2 est encodé en UTF-8, voici pourquoi ceci n'était pas affiché correctement sur le tableau:
Quand bash ne trouve pas les informations correspondantes, il affichera vide,"ECRITURE RESULTAT dans le tableau", évidemment la commande "curl" n'est pas suffisante pour traiter tous les liens, on va essayer avec "egrep" afin d'afficher les encodages.

Comme on voit ici,  ces trois encodages sont compris dans le seul lien, dans ce cas, on va prendre le premier comme le bon.