L’encodage des pages :

Il faut si la page n’est pas en UTF8 ,  faire le dump dans l’encodage détecté, et préciser la sortie du dump.

Il faut mettre un verrous :

Pour décoder l’encodage de départ et forcer l’encodage en UTF8 en sortie.

If  PAGES ASPIREE est en UTF8

Alors DUMP en UTF8

else ; Dump dans l’encodage détecté concesion de dump en UTF8

S’assurer de l’encodage avant de faire le Dump : détecter l’encodage, le mettre en utf8 et faire le dump.

Commande file -i   ..PAGES ASPIREES/1/13.html  , donne l’encodage du document.

on obtient charset=utf-8, on ne peut faire lynx que lorsqu’on sait dans qel code est écrit la page.

La commande CUT :

cut : dans le man, étant donné un fichier, extraire des colonnes dans ce fichier.

On considère ce qui est donné par file-i comme deux colonnes avec une première colonne pour ce qui se trouve avant = et une deuxième pour ce qui se trouve après.

Cut-f : définir les colonnes qui nous intéresse. ici la 2

cut-d : spécifier le marqueur de colonne (par exemple le délimiteur de colonne c’est le caractère = et la deuxième colonne c’est ce qui se trouve après)

On écrit :

on crée la variable encodage

encodage=$ ( file -i ../PAGES ASPIRES/1/13.html | cut -f2 -d= utf-8)

ensuite

echo $encodage

utf-8

Pour le lynx on fait ensuite :

lynx -dump -nolist -display_charset =$encodage

if [encodage== »utf-8]

else

encodage=$(………..)

lynx -d -u -cd = $encodage

Transformer par exemple un codage ISO  en UTF8 avec ICONV

3ème cas de figure : ICONV ne connaît pas l’encodage de départ et ne peut pas le convertir en UTF8

On se sert de la balise charset qui se trouve sur le code html dans la balise meta. Il faut aller chercher dans le fichier html aspirées le contenu de la chaine de caractère meta.

Commande egrep :

egrep : commande de filtrage, elle va chercher un motif exprimer entre guillemets (chaîne de caractères) dans un fichier. Cette commande permet d’extraire des lignes du fichier contenant la chaîne de caractères voulue.

egep « charset= »

exemple :

egrep « charset= » ../PAGES ASPIRES/1/13.html

<meta ……..charset=ISO>

egrep « charset= » ../PAGES ASPIRES/1/13.html |cut -f4 -d =

iso-8859

Il faut pouvoir isolé le charset on peut utiliser le cut mais il se peut que l’on ne sache pas combien de colonne il y a dans la balise meta, pb pour le cut Il faut arriver à dire que l’on veut isoler  l’endroit comportant le charset  pour prendre ce qu’il y a après.

puisque la comande cut-d n’accepte que des caractère unique comme marqueur de commande, on doit transformer la chaine de caractère « charset » en un seul caractère non ambigu pour s’en servir comme marqueur de colonne.

On utilise une nouvelle commande : sed

La commande SED :

sed : c’est un éditeur dans la ligne de commande qui permet de faire du rechercher remplacer directement dans la ligne de commande.

syntaxe :

on utilise par exemple  | ou @ comme caractère de remplacement.

Rechercher _Remplacer

sed -e  » s/charset/\@/ »   => \ permet de déspécialiser @  pour dire que c’est bien ce caractère si il est un opérateur d’expression régulière.

Sed a une syntaxe différente selon les expressions régulières, cela dépend de la puissance de la base d’expression régulière. La base minimale des opérateurs d’exp. régulières est a même pour pearl python,etc en linux.

Maintenant le marqueur de colonne c’est @ qui remplace la chaîne de caractère charset.

on utilise alors un deuxième cut en se servant de @ comme marqueur de colonne. Il ne faut pas utiliser un caractère qui correspond à un opérateur connu comme caractère de replacement, sinon, il faut le mettre entre guillemets.

egrep « charset= » ../PAGES ASPIRES/1/13.html |sed -e « s/charset/\@/ » | cut-d « @ » -f2

ou …………………………………………………………………………………………….cut- \@

on obtient ISO-5589-1″>

on ne veut que ISO-5589-1 donc on ajoute un sed pour supprimer tout ce qui a après le  »

sed -e « s/.\ ».*$// »

rechercher . (ie n’importe quel chaine de caractère) devant  » suivit de n’importe quel caractère en fin de ligne ($), remplacer par rien. On supprime tout ce qui suit le  »

Attention : si l’encodage n’est pas détecté, on ne lance pas de lynx. on bloque le traitement si l’aspiration s’est mal passé.

sort-u pour n’avoir qu’une seule occurrence de ce qu’on est en train de chercher.

Publicités