• Finalisation du script Bash

    A la séance de cours du 25 novembre, nous avons reprit le programme pour parvenir à la version finale. Nous nous étions arrêtés au traitement des URLs encodées en UTF-8.

    Cette fois-ci, nous avons ajouté le traitement de données qui ne sont pas en UTF-8. Pour gagner du temps et avoir une meilleure lisibilité du script, nous avons fait des commandes de récupération des pages, de calcul de bigrammes et de recherche de contexte autour du motif choisi une fonction que nous pourrons appeler plusieurs fois. Ci-dessous la nouvelle fonction, que nous avons placé au début du script, après la déclaration des arguments. "traitementURL" est le nom de cette fonction.

    traitementURL()
    (
    # on récupère le contenu de la page
    lynx -dump -nolist -assume_charset="UTF-8" -display_charset="UTF-8" "./PAGES-ASPIREES/url_$numTable-$compteur.html" > ./DUMP-TEXT/"utf8_$numTable-$compteur".txt;
    # puis on compte les occurences de notre motif
    numMotif=$(egrep -o -i $motif ./DUMP-TEXT/"utf8_$numTable-$compteur".txt | wc -l);

    # construction de morceaux de corpus
    egrep -C 2 -i "$motif" ./DUMP-TEXT/"utf8_$numTable-$compteur".txt > ./CONTEXTES/"utf8_$numTable-$compteur".txt;
    # donner à voir ces contextes en HTML
    perl ./PROGRAMMES/minigrepmultilingue-v2.2-regexp/minigrepmultilingue.pl "UTF-8" ./DUMP-TEXT/"utf8_$numTable-$compteur".txt ./PROGRAMMES/minigrepmultilingue-v2.2-regexp/motif-2020.txt;
    # sauvegarde du résultat
    mv resultat-extraction.html ./CONTEXTES/"url_$numTable-$compteur".html;

    # index hierarchique de chaque DUMP
    egrep -i -o "\w+" ./DUMP-TEXT/"utf8_$numTable-$compteur".txt | sort | uniq -c  | sort -r -n -s -k 1,1 > ./DUMP-TEXT/"index_$numTable-$compteur".txt;

    # calcul de bigrammes
    tr " " "\n" < ./DUMP-TEXT/"utf8_$numTable-$compteur".txt | tr -s "\n" | egrep -v "^$" > index1.txt;
    tail -n +2 index1.txt  > index2.txt; # on efface la 1ère ligne
    paste index1.txt index2.txt | sort | uniq -c | sort -r -n -s -k 1,1 -r > ./DUMP-TEXT/"bigrammes_$numTable-$compteur".txt;
    # écriture dans le tableau
    echo "<tr><td>$compteur</td><td><a target=\"_blank\" href=\"$line\">$line</a></td><td>$codehttp</td>
    <td><a href=\"../PAGES-ASPIREES/url_$numTable-$compteur.html\">PA $compteur</a></td>
    <td><a href=\"../DUMP-TEXT/url_$numTable-$compteur.txt\">Dump $compteur</a></td><td>$encodageURL</td>
    <td>$numMotif</td><td><a href=\"../CONTEXTES/utf8_$numTable-$compteur.txt\">Contexte $compteur</a></td>
    <td><a href=\"../CONTEXTES/url_$numTable-$compteur.html\">Contexte $compteur</a></td>
    <td><a href=\"../DUMP-TEXT/index_$numTable-$compteur.txt\">Index $compteur</a></td>
    <td><a href=\"../DUMP-TEXT/bigrammes_$numTable-$compteur.txt\">Bigrammes $compteur</a></td></tr>" >> $tableau;
    )

    Pour pouvoir travailler avec les pages web qui sont d'un autre encodage que UTF-8, nous avons converti l'encodage en UTF-8 grâce à la commande iconv : iconv -f $encodageURL -t UTF-8 ./DUMP-TEXT/"utf8_$numTable-$compteur".txt;. Pour ne pas générer d'erreur, il est nécessaire de vérifier si le nom de l'encodage est présent dans la liste de ceux supportés par iconv.

     

    if [[ $encodageURL != "" ]]
                        then
                            reponse=$(iconv -l | egrep "$encodageURL")
                            if [[ $reponse != "" ]]
                            then
                                iconv -f $encodageURL -t UTF-8 ./DUMP-TEXT/"utf8_$numTable-$compteur".txt;
                                traitementURL;
                            else
                                echo "<tr><td>$compteur</td><td><a target=\"_blank\" href=\"$line\">$line</a></td><td>$codehttp</td><td><a href=\"../PAGES-ASPIREES/url_$numTable-$compteur.html\">PA $compteur</a></td><td> - </td><td>$encodageURL</td><td>??</td><td>??</td><td>??</td><td>??</td><td>??</td></tr>" >> $tableau;
                             fi
    else
             encodageExtrait=$(./PROGRAMMES/detect-encoding/detect-encoding.exe ./PAGE-ASPIREES/"url_$numTable-$compteur".html | tr -d "\n" | tr -d "\r");
               reponse=$(iconv -l | egrep "$encodageExtrait");
               if [[ $response != "" ]]
                            then
                                iconv -f $encodageURL -t UTF-8 ./DUMP-TEXT/"utf8_$numTable-$compteur".txt;
                                traitementURL;
                else
                                echo "<tr><td>$compteur</td><td><a target=\"_blank\" href=\"$line\">$line</a></td><td>$codehttp</td><td><a href=\"../PAGES-ASPIREES/url_$numTable-$compteur.html\">PA $compteur</a></td><td> - </td><td>$encodageURL</td><td>??</td><td>??</td><td>??</td><td>??</td><td>??</td></tr>" >> $tableau;                        
                fi
     fi

    Si le script ne parvient toujours pas à détécter l'encodage de la page, nous devons appeler un logiciel déjà existant - que nous avons récupéré dans le site du cours - permettant de s'assurer de bien le détécter (encodageExtrait=$(./PROGRAMMES/detect-encoding/detect-encoding.exe ./PAGE-ASPIREES/"url_$numTable-$compteur".html | tr -d "\n" | tr -d "\r");).

    Malgré les modifications apportées, il semble y avoir encore quelques soucis d'encodage :

    Finalisation du script Bash

    Télécharger « table_url251120.sh »

    Aller voir « tableau_url.html »


  • Commentaires

    Aucun commentaire pour le moment

    Suivre le flux RSS des commentaires


    Ajouter un commentaire

    Nom / Pseudo :

    E-mail (facultatif) :

    Site Web (facultatif) :

    Commentaire :