samedi 7 janvier 2012

Script affichant les contextes

Bonsoir,

Après un mois sans nouvelles, voici donc le script en dernière "phase". Des colonnes pour les contextes en .txt et en .html (grâce au minigrep) ont été ajoutées. Nous avons également créé des fichiers globaux comprenant pour chaque langue le dump-text et le contexte, le fichier global du contexte permettant de faire les nuages de mots.
Il ne reste plus qu'à ajouter le comptage du motif étudié (vacances).

Voici le script complet utilisé : (cliquer dessus pour que l'image s'affiche complètement)




Le tableau suivant est créé :


Nous devons encore chercher de nouvelles URL pour l'allemand.


samedi 3 décembre 2011

Curl : Bad Request, 404 not found...rejet des pages aspirées

Bonsoir,

Ce billet exposera le script utilisé pour rejeter les URLs dont les pages n'ont pas pu être aspirées. On utilise la commande egrep pour savoir si des segments comme "Bad request" ou bien "404 not found" sont présents dans la page.

Script utilisé :


-> Avant de faire tout le "bloc" lynx, on pose une condition : si (if) ce que contient $controlcurl n'est pas vide (= si la commande egrep a trouvé un des segments désignant une erreur) alors on ne fait pas le dump-text/la conversion. Sinon (else) on rentre dans les boucles permettant de faire le dump-text et la conversion en UTF-8.

/!\ Ne pas oublier de fermer le if/else à la fin du bloc lynx (fi).  Il se trouvera après tous les fi du lynx mais avant le let et le done.

J'ai introduit dans mon fichier d'URLs des liens ayant un segment désignant une erreur pour illustrer le script, n'ayant pas d'URLs françaises qui en produisent.
Résultat :



Problème concernant les URLS japonaises : j'ai essayé de repérer moi-même les messages d'erreur en japonais (sans trop de problème) mais lorsque j'intègre ces messages d'erreurs (en kanjis) au script (donc à la suite de Bad Request|Service Unavailable...) cela ne fonctionne pas. Je pense que le script ne gère pas bien les kanjis, je n'ai donc pour le moment pas de solution.

jeudi 1 décembre 2011

Tableau de lien avec conversion des dump (commande iconv)

Bonjour,

Le billet d'aujourd'hui présentera le script qui nous a permis de créer un tableau contenant les colonnes supplémentaires suivantes : dump-text initial, avec un lien redirigeant vers un .txt contenant le dump-text dans l'encodage initial si il n'est pas en utf-8 ; dump-text utf-8, avec un lien redirigeant vers un .txt contenant le dump-text convertit en utf-8.

À partir de maintenant, Uta et moi travaillerons uniquement sur mon ordinateur (qui est sous ubuntu) puisque la commande lynx ne fonctionne pas sous mac.

Script permettant de générer le tableau : (début et fin du script voir images précédentes)

(Pour afficher le script lisiblement : cliquer sur l'image, une fois qu'elle apparait clic-droit dessus puis "afficher l'image". Elle s'ouvre dans un autre onglet et vous pouvez zoomer dessus.)

Nous avons donc le tableau suivant qui apparait en ouvrant le .html :


Merci beaucoup à Ilaine pour ses précieuses informations qui nous ont beaucoup aidées :)
La prochaine étape : déterminer si l'aspiration d'une page a échoué (en vérifiant si elle contient des choses du type "Bad Request" ou "404 not found") et déterminer le contexte dans lequel notre mot est utilisé grâce à egrep.



lundi 21 novembre 2011

Tableau de lien avec dump-text (commande lynx)

Exercice :

- Faire dans le tableau une nouvelle colonne avec le dump-text des pages aspirées grâce à la commande lynx.
- afficher avec la commande file (option -i pour plus de lisibilité) le charset
- Déterminer si le mot recherché (ici le mot vacances) est toujours présent dans le dump-text. Cela permet d'écarter des URLS dont on ne peut pas aspirer la page.

Voilà le script utilisé :


La commande lynx fonctionne très bien, file également.
J'ai essayé la structure conditionnelle suivante pour déterminer si "vacances" se trouvait toujours dans le dump-text :

mot="vacances"
dump=../DUMP-TEXT/$j/$i.txt
case $mot in
`cat $dump`) echo "<td align=\"center\" width=\"50\">OK</td></tr>" ;;
esac

Donc je demande au script de regarder dans le contenu de chaque fichier dump-text (cat $dump) si le mot vacances est présent. Cependant, cela ne fonctionne pas. Je crois que c'est parce qu'il ne faut pas qu'il y a d'espace dans la partie entre in et ) et j'en mets un entre le cat et la variable.

J'ai donc essayé la solution suivante avec un alias, sans résultat non plus :


(cf la partie sur les alias ici)

Le tableau suivant a donc été créé :


Pour le dump-text j'ai juste eu un problème. Même si il est en UTF-8, mon navigateur lit les pages en ISO par défaut et j'ai ce type de page qui apparait :


En changeant manuellement l'affichage, les caractères spéciaux s'affichent normalement comme ceci :


Je n'ai pas réussi à trouver comment forcer firefox à lire les pages en UTF-8.

samedi 19 novembre 2011

Problème avec la commande curl

J'ai testé mon script avec curl sur mon ordinateur et je rencontre plusieurs problèmes.

Tout d'abord les pages aspirées ne fonctionnent que une fois sur deux. Sur six liens, je ne peux en visionner que trois. J'ai remarqué que la raison de ce problème venait du fait que certaines pages aspirées se terminent par l'extension .html et les autres n'affichent pas d'extensions.


J'ai ensuite vérifié les fichiers des liens et je vois que les liens n'affichant pas d'extension html, sont les liens qui se terminent également sans extension. Le nom que prends la page aspirée est donc la dernière partie du lien après le dernier slash.
Le tableau des liens affiche des erreurs, même pour les pages que j'ai réussi à aspirer :

Ma fenêtre de commande affiche aussi le message suivant entre chaque lien traité:
curl: (6) Could not resolve host: .; nodename nor servname provided, or not known

D'autre part, comme on peut le voir sur la première image, je n'arrive pas à ranger les pages aspirées dans leur dossier correspondant. J'ai essayé de changer le chemin après le mkdir dans la première boucle mais je n'y arrive toujours pas.
De plus j'ai regardé les scripts postés sur différents blogs (comme sur celui-ci), et j'ai vu que pour la commande curl l'argument '$nom' est placé à la fin de la commande. Pour ma part, si je la note à la fin de la commande, les pages ne sont pas aspirées sur l'ordinateur mais défilent sur la fenêtre de mon terminal.

Comment faire pour résoudre ces problèmes?

mardi 15 novembre 2011

Un fichier contenant un tableau par langue

J'ai voulu faire le script pour créer un fichier contenant un tableau pour chaque langue.
Voilà mon script:



Lorsque je l'exécute sur le terminal, je reçois le message d'erreur suivant:
cat: .././URLs/URLs_jap.txt/http://www.soccer-king.jp/news/italy/article/201110121900_inter_zanetti.html: Not a directory
cat: .././URLs/URLs_jap.txt/http://rocketnews24.com/2011/10/03/135816/: Not a directory

Et ainsi de suite pour chacun de mes liens.
Je pense que le problème vient du flux réentrant. J'ai bien ajouté les deux chemins pour les deux fichiers de liens, mais je ne comprends pas comment le faire exécuter par le script dans une boucle.

jeudi 10 novembre 2011

Tableau de lien avec pages aspirées

J'ai complété le script précédent pour faire apparaitre :

- à côté du n° de tableau le nom du fichier d'URLs utilisé de telle sorte qu'on sache de quelle langue il s'agit. Pour ne pas faire apparaître l'extension qui n'est pas nécessaire, j'ai utilisé la commande : $(basename $fic .txt). J'ai utilisé $(...) pour que la commande soit effectuée même si elle se trouve dans un echo (voir script).

- une colonne comprenant un lien vers les pages aspirées se trouvant localement sur ma machine. J'ai utilisé la commande curl qui permet de récupérer le contenu d'une page sur un fichier local de son ordinateur. J'ai d'abord dû installer cette commande en tapant dans mon terminal sudo apt-get install curl.

- une dernière colonne comprenant le retour d'éventuelles erreurs de la commande curl. Dans le script, il s'agit de la commande retourcurl=$?

Script effectué (j'ai supprimé tous les anciens commentaires, ils sont encore visibles dans le screen du script précédent) :


Page html générée :

Un exemple de page aspirée :

Cependant, j'ai l'impression que cela n'a pas fonctionné pour certaines pages alors qu'aucune erreur n'a été mentionnée dans la colonne retourcurl. La page aspirée qui a été enregistré dans mon dossier est identique à la page présente sur la toile :


Cela s'est produit sur plusieurs pages aspirées, et je ne comprends pas d'où peut venir ce problème ?