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 ?

jeudi 3 novembre 2011

Tableau de liens et numéros

Nous avions la consigne suivante :
Insérer une nouvelle colonne en y insérant le numéro de l'URL lue
Modifier le codage HTML pour établir un lien vers l'URL lue

Le script qui suit permet donc de générer un fichier .html contenant le code html pour créer une page qui affichera dans un tableau à deux colonnes le numéro de l'URL et le lien vers l'URL. Il permet également d'aller chercher les URLS dans plusieurs fichiers. Si il y a plusieurs fichiers, plusieurs tableaux seront créés (donc un tableau pour chaque langue).


J'ai eu du mal à faire fonctionner le script car le terminal me donnait la réponse suivante : script2.sh: 23: let: not found

Après recherche sur internet, c'est parce qu'il fallait appeler le script via le terminal non pas avec la commande sh monscript.sh mais avec bash monscript.sh . Avec l'utilisation de cette commande, le script s'est lancé sans problème. Peut-être que cela fonctionnerait également en utilisant chmod pour rendre le fichier exécutable.

Une portion du résultat généré quand on ouvre le fichier .html créé dans un navigateur :