Miscellanées, le site de Christian Féron
Le site de Christian Féron

Les bases du parsing

par Christian Féron (2005)

A quoi sert le parsing ?

Le parsing sert à retourner de l'information contenue sur des pages Web situées sur des serveurs distants ou non :

  • Retourner de l'information est un objectif propre aux services de renseignement de toutes les nations modernes ;
  • Automatiser et robotiser les méthodes de retour de l'information est, par conséquent, un objectif stratégique autant que tactique ;
  • Au moyen du parsing, il est possible de constituer des bases de données d'informations ciblées, constamment tenues à jour, immédiatement disponibles et classées.

Les avantages sont la réactivité, obtenue au moyen de l'actualisation permanente, et le groupage natif par thème.

Autant de critères exigés par ceux qui ont la lourde responsabilité de décider...

Comment parser une page Web ?

Le parsing repose en tout premier lieu sur les routines de gestion de chaines.

Il importe donc de choisir un langage de programmation ayant des fonctions souples et puissantes à cette fin.

Le premier travail consiste à analyser la page à parser, afin d'établir une liste des points de repère exploitables. Il s'agit de mots-clés que l'automate de parsing devra localiser à l'intérieur de cette page :

  • Ces points de repère consistent en des mots, des balises, des attributs et éventuellement certaines valeurs d'attributs ;
  • Il peut également s'agir de couleurs exprimées en HTML, de noms de fichiers ou de dossiers, mais il faut dans l'absolu éviter des repères pouvant être modifiés par un webmaster, lors de son travail de maintenance d'un site web ;
  • L'essentiel est qu'un point de repère ne puisse pas être confondu avec une autre expression identique dans la page à analyser, sinon le Parser pourrait les confondre ;
  • Une astuce consiste à employer la fonction "Rechercher" d'un logiciel de traitement de texte, afin de vérifier l'emplacement ainsi que le nombre d'occurrences d'un point de repère que l'on envisage d'exploiter. On pourra ainsi être certain que l'expression est localisable, si elle est la première ou la seconde d'une page, et combien il y en a ;
  • La technique consiste ensuite à faire lire à l'automate de parsing, soit ligne par ligne, soit en une seule fois (cas d'une variable contenant la totalité d'un fichier), une page web, afin de localiser les points de repère. On utilise en principe 2 points de repère (l'un de début, l'autre de fin) ou bien des masques, afin de retourner l'expression se trouvant, soit comprise entre le point de début et celui de fin, soit celle retenue par le masque ;
  • Les variables non-vides sont ensuite retournées vers une routine de gestion de données.

Un bon automate de parsing doit être doublé d'une routine d'envoi de mail, afin d'être immédiatement informé lorsqu'une page n'existe plus, ou bien a été modifiée de manière nuisant au fonctionnement du Parser.

D'autre part, un automate de parsing est forcément intégré à l'intérieur d'une structure hiérarchisée d'autres automates, possédant un niveau d'administration centralisé.

En d'autres termes, un parser contiendra un admin pour le gérer, un fichier de configuration, un cronjob ainsi qu'une série d'automates de parsing. Le déclenchement des automates sera effectué par un script qui servira d'interrupteur général des automates, et déclenchera ceux-ci aux heures prévues dans la journée.

SQL ou pas ?

Il n'est pas indispensable d'utiliser SQL pour cela. On peut trouver avantage à construire son propre système de bases de données, à condition d'avoir organisé correctement le classement natif des informations dans des fichiers séparés.

L'exploitation des données est ensuite assurée par les officiers traitants, qui ont accès uniquement aux fichiers de résultat qui leur ont été assignés sur le serveur.

Le parsing, tout un art ?

Parser une page Web est difficile. La première raison est que, tout simplement, le code source de la page n'est pas forcément identique à ce qui a été enregistré par un navigateur web.

Si tel est le cas, il faut alors utiliser des méthodes "variées" afin de ramener une version de la page la plus proche possible de ce qu'elle est sur le serveur distant.

En effet, une page en php sera toujours interprétée dès qu'elle sera transmise par http : les différences peuvent alors être très sensibles. Même chose pour les pages en asp.

Dans ce cas, il faut recourir à toutes les possibilités offertes par les routines de gestion de chaines du langage de programmation que l'on emploie. C'est la raison pour laquelle il est essentiel de choisir un langage particulièrement puissant et souple.

Les fonctions de splitage destinées à renvoyer des valeurs dans des variables de type array ne sont pas à négliger non plus.

En fait, parser des pages complexes, étant donné les méthodes demandées et l'expérience nécessaire, s'apparente plus à un art qu'à une technique, à vrai dire...


Exemple de fabrication d'un Parser simple : Parsing_Bases.zip. Les principes de base y sont montrés.

Haut de page