Affichage des articles dont le libellé est Outils. Afficher tous les articles
Affichage des articles dont le libellé est Outils. Afficher tous les articles

lundi 17 décembre 2007

script.sh: amélioration

A partir des noms des fichiers d'URL, le script crée différents répertoires et y enregistre les pages aspirées, les dumps, les contextes.
Seulement voilà : ces noms de fichiers sont utilisés tels quels, avec leurs extensions, et nous nous retrouvons avec des répertoires "quelque_chose.txt" dans notre arborescence.
Pour remédier à ce problème, nous allons utiliser la commande basename avec la syntaxe suivante:

fic2=$(basename $fic .txt)


Nous allons ensuite utiliser la chaine de caractères stockée dans la variable $fic2 pour nommer nos répertoires:

mkdir ./pg_aspirees/$fic2


vendredi 30 novembre 2007

minigrepmultilingue 1.0

La dernière étape de notre projet (avant la mise en forme finale) consiste à extraire de nos fichiers dump, un motif et son contexte. Pour un texte en français ou en anglais la commande egrep aurait suffit, mais pour du japonais et du chinois, il nous fallait un équivalent supportant Unicode.
Nous nous sommes donc tournés vers minigrepmultilingue 1.0, parfait pour ce que nous avons à faire.


i. préparation


Télécharger et décompresser minigrepmultilingue.zip (c'est l'archive contenant le script et le module Unicode-String-2.09) dans un répertoire que nous appellerons "minigrepmultilingue".



Démarrer le gestionnaire de paquets de Cygwin (setup) et vérifier que make et gcc sont bien installés (ils se trouvent dans la catégorie Devel).



Sous Cygwin, se placer dans le repertoire "minigrepmultilingue" et décompresser le module Unicode-String-2.09 :

tar xzf Unicode-String-2.09.tar.gz




ii. compilation


aller dans le dossier du module Unicode-String-2.09 et lancer le script Makefile.PL :



lancer la commande make



et enfin make test




iii. installation


pour l'installation, rien de très compliqué, il suffit juste de taper: make install




iv. test

Pour s'assurer que tout s'est passé correctement, rien de tel qu'un petit test. Selon l'exemple fourni avec le script nous allons chercher le motif основных dans le fichier RU_Convention_UTF8.txt :

perl mini-grep-multilingue.pl "UTF-8" RU_Convention_UTF8.txt motif.txt

En sortie nous avons un fichier html, ca marche!




Pour plus d'informations: http://www.cavi.univ-paris3.fr/ilpga/ilpga/...

lynx -dump

Une fois nos pages aspirées avec wget, nous devons en extraire le texte.
Pour ce faire nous allons utiliser l'option dump de lynx
La syntaxe est la suivante:

lynx -dump [URL] > [dump].txt


w3m, un autre navigateur internet en mode texte, permet de faire la même opération. Mais attention! w3m gérant les frames il arrive que le fichier dump en sortie soit incompréhensible (des morceaux de textes de différentes parties de la page pouvant être mélangés).

vendredi 16 novembre 2007

%0D?

Mettre wget dans un script BASh devait permettre d'automatiser la tâche d'aspiration de mes pages. J'ai écrit un script qui parcourt chaque ligne (donc adresse) du fichier d'URL, extrait chacune des pages à l'aide de wget et, dans un tableau nouvellement créé, donne un lien vers la page online et un autre vers la page aspirée.
Tout allait pour le mieux dans le meilleur des mondes jusqu'à ce que je me rende compte que script.sh (c'est son petit nom) ne faisait pas ce que je lui avais demandé:


Que se passe t-il? J'ai beau vérifier mon script encore et encore, le réécrire de A à Z, essayer avec différents fichiers d'URL... wget n'arrive pas à trouver les pages que je lui demande d'aspirer.
Mais alors que je regarde ma fenêtre Cygwin d'un peu plus près, je remarque que les URL qui apparaissent dans mon script se terminent toutes par %0D... %0D! Ce serait pas un caractère de contrôle ça? Comme celui qui permet de faire un retour chariot? Je vérifie à nouveau le fichier texte contenant mes URL: comme je m'en doutais, %0D n'apparait nul part.



Tout devient clair! Les retours à la ligne de mes fichiers textes (tapés sous Windows XP) sont interprétés différemment par Cygwin (qui émule un système UNIX). Notepad++, entre autres, permet de régler ce problème en un seul click:



Je peux maintenant relancer mon script et constater avec satisfaction que le problème est résolu:


dimanche 28 octobre 2007

De la concaténation de deux pages web

En fouillant un peu dans la documentation de wget, nous sommes tombés sur l'option -O, qui permet d'enregistrer toutes les pages aspirées dans un seul fichier html.

wget -i [fichier texte contenant les URL] -O [fichier html de sortie]

Cette concaténation peut donner des résultats intéressants, comme en témoigne l'exemple ci-dessous.

En entrée:
  • URL_1: japonais (JAP-EUC)
  • URL_2: japonais (Shift_JIS)

En sortie:
  • URL_3: une page web en japonais avec deux codages différents.

jeudi 25 octobre 2007

wget, va chercher!

Après avoir créé un fichier texte contenant les URL (et seulement ces URL) des pages qui nous intéressent nous pouvons passer à l'étape qui consiste à "aspirer" ces mêmes pages. Nous allons pour ce faire utiliser la commande/aspirateur wget.

Deux méthodes:
  • Pour aspirer manuellement les pages, l'une après l'autre (il faut le vouloir), la syntaxe est la suivante:
    wget [URL]
  • Pour aspirer toutes les pages d'une seule ligne de commande:
    wget -i [fichier texte contenant les URL]
*à noter que les pages extraites sont enregistrées dans le repertoire courant.