pluriTAL – BLOG Master pluriTAL [ParisX, ParisIII, INALCO]

ped02-CJ-barrage.

Posted in Projet 2006-2007 by pluritaluser on 14 octobre 2006

Reprise de l’activité après quelques soucis de connexion, un bon week-end de travail, voici un moyen de récupérer 50 URLs et les pages associées « assez facilement »

1- Utiliser un moteur de recherche et formuler de bonnes requêtes, c’est à dire des requêtes permettant d’avoir un résultat homogène, toutes les URLs pointant sur un sens de barrage relativement proche.

Ex:

– Barrage relatif aux instruments de musique : on peut essayer une requête de type barrage+instrument, avec google on voit que la page n’est pas uniforme, en effet : un instrument peut être économique, construire un barrage est un enjeu économique …

Mais la requête (barrage+instrument+musique) semble renvoyer une page uniforme, on peut donc sauvegarder cette page de résultat sous le nom barrage_instrument_musique.html

– Continuons avec Barrage dans le sens de barrage militaire ou policier : La requête ( barrage militaires police) semble uniforme enregistrons l e résultat sous barrage_militaires_police.html

– Continuons avec Barrage hydraulique/électrique : Là c’est un peu de la triche, et les résultats ne sont pas garantie, requête : (barrage -police -militaire -guitare -film), enregistrons la page sous barrage_-police_-militaire_-guitare_-film.html

– Continuons avec Barrage dans le domaine sportif comme Match barrage : la requête
(match barrage) enregistrons la page sous match_barrage.html

– Enfin Barrage au sens figuré de faire barrage avec la requête « faire barrage » enregistrons la page sous barrage_faire_barrage.html
Toutes ces pages ont été enregistré dans le répertoire PAGES-ASPIREES.

2- Lancer un script qui pour chaque page de résultat, créer le répertoire, télécharge les pages identifiées par les URLs de la page résultat et les sauvegardent dans le répertoire correspondant, et présente le résultat dans une page html avec un titre et tous les liens. (Pour l’instant une page par répertoire).

Ce script réalisé par mes soins s’appelle aspire_all.sh, voici son contenu :

#!/bin/sh

for fic in `ls -1 barrage_* | cut -d _ -f 2,3`
do
searchHtml= »barrage_ » »$fic »
rep= »usage-«  »$fic »
./telecharge_page_url.sh $searchHtml $rep
done

En fait ce script s’occupe seulement de générer des noms de répertoires à partir des pages présentes dans le répertoire courant qui commence par barrage_ pour chacun de ces fichiers il créé un répertoire d’accueil ayant un nom commençant par usage- et lance le script telecharge_page_url.sh qui prend deux arguments $searchHtml qui est une page de résultat d’un moteur de recherche et $rep le répertoire d’accueil de ces pages.

telecharge_page_url.sh marche pas trop mal mais je ne vais pas le poster ici et maintenant, cela vous priverez d’un long travail, mais je peux donner quelques pistes sur la façon dont je l’ai réalisé :

  1. D’abord utiliser lynx avec l’option -dump pour ne garder que du fichier de la page résultat de google qu’un fichier texte sans balise html.
  2. Utiliser grep pour récupérer toutes les URLs
  3. Utiliser grep pour enlever toutes les URls de la page de résultat appartenant à google (Pub, liens internes)
  4. Utiliser Grep pour enlever les liens ayant des adresses IP plutôt que des noms de domaines (c’est aussi des liens sur Google)
  5. On peut dire que la partie 3 et 4 est spécifique à des pages de résultats Google, c’est un filtre et il faudrait pouvoir paramétrer celui-ci en fonction du moteur de recherche qui a généré la page de recherche.
  6. Toutes ces URLs filtrées devrait être dans un fichier que l’on passera en paramètre à wget avec l’option -i, on utilisera aussi l’option -P avec le répertoire passé en paramètre à la ligne de commande, l’option -N de wget est aussi très intéressante.
  7. Arrivé à ce stade on a un fichier texte contenant une liste d’URL, un répertoire avec une liste de pages html correspondant à ces URLs.
  8. Ensuite il ne reste plus qu’à générér un fichier html avec le fichier text d’URL.
  9. On peut aussi compliquer le programme avec une vérification : autant de page dans le répertoire que ‘URL dans le fichier. Créer un répertoire s’il n’existe pas, mais s’il existe déjà et si un fichier html généré par une précédente exécution de ce script existe déjà alors ne faudrait-il pas concaténer les résultats des deux éxections. (telecharge_page_url.sh s’occupe de ça aussi), mais du coup la vérification répertoire, lien n’est-elle pas plus complexe à réaliser ?
  10. Voilà c’est tout.

Reprise de la recherche au cours du week-end du 14 octobre, assis devant une Mandriva 2006, et XFCE4 comme gestionnaire de fenêtre.

1 – Barrage police/militaire (Répertoire usage-polmil) :

Recherche à partir du Monde :

Recherche à partir de Google (page7)

2 – Travaux publics : (Dossier usage-hydro)
Recherche à partir du monde :

Recherche à partir de Google :
Une recherche sur google avec le mot Barrage fait apparaitre d’abord les liens sur barrage ouvrage d’art, les liens notamment traitant de la palestine n’arrive que bien plus tard page 7.

3- Sens figuré (répertoire usage-figuré) :

Le sens figuré recouvre plusieurs sens en fonction du contexte, ainsi il faut faire barrage à une politique de droite, la femme est un barrage hydraulique, et autre sens.

Recherche sur Google (page 5)

4- Hors catégorie (répertoire usage-aclasser): Demande une reflexion plus poussée avant de pouvoir classer l’article.

5- Barrage le film (repertoire usage-film) : Barrage semble être aussi le titre d’un film, apparu sur Le Monde il est aussi très présent sur Google. Au début c’était hors catégorie,

Recherche sur google (page3).

6- Barrage de guitar : Un nouveau sens est apparu, barrage terme technique désigne une partie de guitar

Une autre manière de faire : début d’automatisation :
Arrivé à ce point, la lassitude me guette, il faut mettre en place une stratégie. Pour éviter de me lasser, je n’ai pas sauvegardé les pages, je n’aime pas cliquer et répeter le même mouvement, je me décide à utiliser wget.

wget : Mes Urls sont déjà classées, j’ai un répertoire cible pour chaque série.
Je ne veux pas lancer wget pour chaque URL, il faut donc un moyen de grouper la commande.

Risque-t-on de rencontrer des problèmes :
– c’est possible, il a fallu fournir un nom d’utilisateur et un mot de passe pour accèder aux articles du monde.
– N’oublions pas qu’on veut uniquement la page sans les images et sans suivre les autres liens,

Voilà donc des usages précis, spécifics, wget va-t-il pouvoir m’aider ?
Vite « man wget » devrait répondre à mes interrogations.

Liste des options sélectionnées :

-i file, voici une option intéressante Read URL from file, c’est à dire que l’on peut mettre notre liste d’URL à récupérer dans un fichier.

–user=user
–password=password
Indique le nom d’utilisateur et le mot de passe pour aussi bien le téléchargement de fichier par http et ftp. On utilisera pour récupérer les fichers sur LeMonde.

-P prefix : répertoire de sauvegarde, par défaut le répertoire courant.

-r, -p, -k : Par défaut wget semble télécharger juste la page html sans suivre les liens, sans les images, on n’a donc pas besoin d’activer ces options …

Il faut donc se placer dans le répertoire de sauvegarde désiré.
Ensuite on crée la liste des répertoires désirés :
mkdir usage-polmil
mkdir usage-film
mkdir usage-hydro
mkdir usage-aclasser (Pour les liens demandant à être reclassé)
mkdir usage-figuré
On devrait donc avoir 5 commandes wget à émettre, une par fichier de liste d’url se destinant à un répertoire particulier.

Je mets chaque liste d’url dans un fichier de type repertoirededestination.txt

La liste des commandes wget sera donc celle-ci :
wget –user=user –password=pass -i usage-polmil.txt -P usage-polmil/
wget –user=user –password=pass -i usage-film.txt -P usage-film/
wget –user=user –password=pass -i usage-hydro.txt -P usage-hydro/
wget –user=user –password=pass -i usage-aclasser.txt -P usage-aclasser/
wget –user=user –password=pass -i usage-figuré.txt -P usage-figuré/

PS : user et pass sont à remplacer par les vraies valeurs.

Je vais mettre ces 5 lignes de commandes dans un fichier script appelés wget_all.sh. J’édite ce fichier en mettant en tout début de fichier, seule sur une seule ligne l’instruction suivante :

#!/bin/sh

…. ici les 5 commandes wget, une par ligne

j’ajoute le droit d’execution à ce fichier :
chmod u+x wget_all.sh
J’exécute ce fichier ./wget_all.sh

Il faut maintenant vérifier certains résultats, il faut trouver autant de fichier dans chaque répertoire que de liens dans le fichier correspondant.

J’ai donc besoin de compter le nombre de ligne dans un fichier : wc -l
Lister les fichiers d’un répertoire avec un nom de fichier par ligne résultat : ls -1,

Compter le nombre de lignes dans les fichiers txt :

Commande : wc -l *.txt
Résultat de la commande :
1 usage-aclasser.txt
4 usage-figuré.txt
4 usage-film.txt
10 usage-hydro.txt
7 usage-polmil.txt
26 total

Maintenant il faut pour chaque répertoire compter le nombre de fichiers qui s’y trouve. Après quelques recherches sur http://abs.traduc.org/abs-3.4-fr/index.html et nombre d’essai : Abracadabra, cadabra

Je tape la Commande :
for i in `find -name « us* » -type d -print`; do echo $i; ls -1 $i|wc -l;done

Résultat de la magie :
./usage-hydro
10
./usage-polmil
7
./usage-film
4
./usage-aclasser
1
./usage-figuré
4
Cette magie est explicable, mais je crois qu’il vaut mieux attendre un peu avant de l’expliquer.

Un coup d’oeil suffit pour montrer que les résultats ont une certaine cohérence.

Beaucoup de boulot pour ne pas avoir à cliquer sur « Enregistrer sous », mais c’est tellement moins lassant. usage-guitar n’est pas encore intégré, il sera intégré plus tard.

Récupérer 50 URLs ne va pas être une partie de plaisir, si wget pouvez récupérer tous les liens à partir d’une page de résultat de recherche, cela serait fantastique.

Recherche initiale le 12/10/2006 :
Voici pas grand chose, forcément avec Windows et des paramètres par défaut, on ne peut pas aller bien loin.

Barrage : Recherche TLFI.

2 entrées principales :
– Arrêt-barrage, subst-masc (Sens spécifique restreind dispositif mines et carrières (jargon))

– Barrage, subst.masc

A. Action de barrer.
1 domaine militaire
2 domaine psychologique
3 domaine sportif

B. barrière, obstacle
– Sens propre (physique)
Exemple sur le web

Travaux publics : (Dossier usage-hydro, nom de ficher correspondant au nom de ficher de l’url )
http://sfmac.no-ip.com/corpusLeMonde/HTML/060523/data/article_473806.html artice du monde

– Sens figuré

1 ancien français. navigation
2 Trav.publi ouvrage d’art.

Hors catégorie : Demande une reflexion plus poussée avant de pouvoir classer l’article. http://sfmac.no-ip.com/corpusLeMonde/HTML/060322/data/article_464932.html (Titre d’un film)

Christian JEAN

Publicités

Laisser un commentaire

Choisissez une méthode de connexion pour poster votre commentaire:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s

%d blogueurs aiment cette page :