Salut tout le monde :)
Il y a peu, j'ai récupéré un petit script que j'avais créé et qui parcourait le web à la recherche d'acronymes / d'abréviations : un "crawler". Je me suis donc remis à la tâche, et aès de nombreuses améliorations et optimisations, je suis arrivé à un résultat assez sympa...
Mais commençons par le début
Le crawler : kesskécé & komensamarche ?
Ce que j'appelle "crawler" est un robot (programme informatique hein, n'imaginez pas un R2D2 qui se branche sur le réseau ><) qui "parcourt le web". Aussi appelé robot d'indexation, il télécharge les pages web et suit les liens présents sur ces pages qui mènent vers d'autres sites, d'où il pourra trouver de nouveaux liens, etc...Le premier script était codé en VBS et datait de plusieurs années, mais le nouveau est codé en Perl, langage souple et puissant que j'apprends en même temps :)
Parcourir le web : pourquoi faire ?
Eh ben oui, à quoi ça sert d'avoir un programme qui se balade sur le web, à part à utiliser de la bande passante et du processeur, me direz-vous ?A rien à part s'amuser, on est d'accord. C'est pourquoi, à la base, je suis parti avec l'objectif de collecter les acronymes et abréviations présentes sur le net.
Ca a donné le projet Acronymes, aujourd'hui plus ou moins abandonné (du moins l'interface web), et le nom du robot : le RIAcronymes.
Sur le plan technique, certains me diront "extraire des acronymes ? difficile ! bla bla bla analyse sémantique du contenu blablabla très difficile blablabla...". Eh bah non, pouf. Je vais pas me compliquer la vie à créer un robot qui comprend le français pour qu'il puisse comprendre les données comme n'importe qui, alors qu'il existe... une balise XHTML <acronym> et <abbr> !
Donc aucun problème sur le plan technique : à chaque page téléchargée, en plus d'appliquer la recherche de liens, on applique une détection de ces balises, et hop on les récupère et on les stocke sur le serveur. C'est rudimentaire mais très intéressant ;)
Les statistiques
Je ne résiste pas à l'envie de poster mes statistiques : en quelques heures d'éxecution, mon nouveau robot a récupéré pas moins de 100 000 liens et parcouru plus de 8000 pages (pour environ 1313 sites différents). La liste de ces sites est accessible ici : http://www.securem.eu/public/listes.html (ah oui, pas la peine d'essayer de trier les colonnes, j'ai copié cette page comme un sagouin et les liens pointent toujours vers l'adresse locale 127.0.0.1 - pas les liens vers les sites par contre).Cependant je me suis vite heurté à une grosse difficulté technique : l'élimination des doublons lorsque le nombre d'adresses est très grand (100 000, tout est relatif ^^). Après quelques benchmarks (chronométrages des parties les plus chronophages du script) il apparaît clairement que le temps mis à vérifier que le lien découvert n'a pas déjà été découvert est énorme par rapport au reste, et aboutit à une perte d'efficacité du script.
Il faut préciser que pour un script bien optimisé, l'étape qui doit prendre le plus de temps est le téléchargement de la page !
Sur le nouveau robot que je réécris, il prend 98% du temps ;)
Pour les différentes stratégies d'exploration et ce qui rend mon nouveau robot plus rapide, je vous ferai sûrement un autre billet avant novembre.
Je posterai aussi sûrement les sources du robot :)