Wolfram language
Etablir le graphe d’un site à l’aide d’un robot
Rechercher les liens d’un site et les adresses associées

Liens entre les pages d’un site et adresses associées fournies par un robot.

Article mis en ligne le 9 janvier 2015
dernière modification le 10 janvier 2015

par bernard.vuilleumier

Un « webcrawler » est un robot qui permet d’établir les relations existant entre les pages d’un site et qui fournit les adresses associées à ces liens. Il permet d’explorer la structure du site à différentes profondeurs.

Réseau d’amis sur facebook

Les relations entre diverses entités peuvent être représentées par un graphe. Si vous établissez votre rapport facebook avec WolframAlpha par exemple, vous obtenez le réseau de vos amis sous forme d’un graphe.

Réseau d’amis sur facebook

La version pro de WolframAlpha qui autorise l’interactivité vous permet de visualiser l’ensemble de vos amis, vos amis masculins, féminins, plus jeunes ou plus âgés que vous, qui habitent votre ville ou encore ceux qui résident où vous avez vécu. Il est aussi possible de colorier les points qui les représentent selon la notoriété, l’âge, le genre, le nombre de commentaires ou de relations de vos amis.

Nombre d’amis de chaque relation

Ces représentations fournissent des informations aisément interprétables et sont utilisées, on peut s’en douter, par de nombreux services de renseignement.

Graphe des pages d’un site

Les liens entre les pages d’un site définissent un réseau, tout comme vos amis sur facebook. Le langage Wolfram permet de réaliser un robot (webcrawler) capable d’explorer un site à la profondeur souhaitée :

webcrawler[rooturl_, depth_] := 
 Flatten[Rest[
   NestList[
    Union[Flatten[
       Thread[# -> Import[#, "Hyperlinks"]] & /@ Last /@ #]] &, {"" ->  rooturl}, depth]]]

Cette fonction accepte deux arguments, l’URL du site à explorer et la profondeur de recherche. Pour obtenir les liens du site http://i-les.ch/pages/index à la profondeur 1 par exemple on écrit :

webcrawler["http://i-les.ch/pages/index", 1]

La fonction retourne une liste de règles de la forme :

{"http://i-les.ch/pages/index" -> "http://i-les.ch/pages/EchangesCourriels.html", 
 "http://i-les.ch/pages/index" -> "http://i-les.ch/pages/Historique_Projet.html", 
 "http://i-les.ch/pages/index" -> "http://www.wolfram.com/language/"}

Le membre de gauche de chaque règle est l’URL de la page de départ (racine) et le membre de droite l’adresse d’une page qui lui est liée. Le langage Wolfram permet de représenter de telles listes sous forme de graphes. La présentation peut être choisie avec des options :

Graph[webcrawler["http://i-les.ch/moodle", 2], VertexStyle -> White, 
 VertexShapeFunction -> "Point", EdgeStyle -> Directive[Opacity[.5], Hue[.15, .5, .8]], 
 Background -> Black, EdgeShapeFunction -> (Line[#1] &)]

Voici le graphe du site www.i-les.ch

Graphe du site i-LES.ch

Adresses des pages dans des infobulles

L’option « VertexLabel » permet d’obtenir les adresses des pages dans des infobulles (Tooltips) associées aux points du graphe :

Graph[webcrawler["http://i-les.ch/moodle", 2], 
 VertexStyle -> White, 
 VertexShapeFunction -> "Point", 
 EdgeStyle -> Directive[Opacity[.5], Hue[.15, .5, .8]], 
 Background -> Black, EdgeShapeFunction -> (Line[#1] &), 
 VertexLabels -> Placed["Name", Tooltip]]

Infobulles et hyperliens associés aux points d’un graphe

En numérotant les points d’un graphe et en associant des hyperliens aux numéros, on offre la possibilité d’accéder aux adresses figurant dans les infobulles. Le survol d’un point donne l’adresse de la page et un clic sur le numéro permet d’y accéder. Exemple.