FLASH INFORMATIQUE FI



Atelier de programmation à l’EPFL - comment extraire des données depuis Internet !




David PORTABELLA

Charles François REY


Pourquoi a-t-on besoin d’extraire des données depuis Internet ?

Imaginez que des informations très intéressantes sont disponibles sur un site Internet (annuaire, résultats sportifs, horaires), mais que celui-ci ne fournit pas d’accès aux données dans un format structuré (base de données, XML, …) pour appliquer un traitement automatique. Comment faire pour extraire ces données ?
C’est le cas par exemple du CIA World Factbook, qui propose gratuitement des données concernant les pays du monde entier : on peut y trouver entre autres des données démographiques ou encore sur le système de télécommunications d’un pays (combien de portables, par exemple). Les données sont sous une forme semi-structurée, sans possibilité de les importer dans une feuille Excel ou une base de données. Si ces données étaient disponibles sous une forme structurée pour l’utilisateur, on pourrait faire des requêtes pour savoir par exemple quels sont les pays dont le PIB par habitant est plus grand que $20’000 et dont le nombre total de portables est supérieur à 50 millions ?, ou alors appliquer des techniques statistiques ou de data-mining.
Extraire des informations depuis des sites Web peut être utile dans les cas suivants :

  • obtenir des données pour des recherches scientifiques ;
  • créer des applications intelligentes ;
  • analyser les tendances d’un marché ou la concurrence ;
  • marketing ciblé.

Software open-source Kraken

Le Laboratoire de Bases de Données (EPFL-LBD) a créé un logiciel appelé Kraken pour extraire des informations depuis des sources semi-structurées vers un format structuré, de manière flexible et robuste. L’utilisateur assemble des composants spécialisés de manière à former un programme qui va extraire les informations intéressantes dans un format structuré.
Des outils qui réalisent déjà un but similaire existent, mais ils ont soit des limitations importantes, ou il n’est pas possible (ou du moins très difficile) de les étendre pour accomplir de nouvelles fonctions. On citera par exemple Dapper, Web-Harvest, OpenKapow ou encore Yahoo Pipes. Certains proposent une interface graphique très facile à utiliser, au détriment des fonctionnalités.
L’outil développé au LBD a été conçu pour des développeurs, avec des possibilités d’extension et une puissance inégalée. Le temps nécessaire à la construction d’un extracteur pour site Web est grandement réduit, et il y a beaucoup moins de post-processing à faire une fois les données récoltées. Voici un exemple de séquence d’instructions pour l’extraction :

  1. télécharger un document d’après une URL,
  2. récupérer le noeud qui correspond à l’expression XPath //div[@id=’unitPrice’],
  3. capturer un groupe de chiffres avec une expression régulière ’([0-9]+) Euros’,
  4. et finalement, convertir la chaîne de caractères en un nombre entier.

Il est également possible d’effectuer des boucles, pour par exemple télécharger plusieurs pages jusqu’à ce qu’un lien du type Prochaine page n’existe plus, et effectuer un traitement sur les pages récupérées.
Définir des séquences d’instructions pour l’extraction de données et les combiner peut être fait facilement dans notre framework. Ainsi, l’extraction de données telles qu’un catalogue de produits (leshop.ch) ou la liste des jeux de gamespot.com est faire de manière aisée et flexible. Le logiciel permet de détecter des irrégularités dans les données (changement de layout, par exemple), et dans ce cas le développeur en est informé et peut effectuer les changements nécessaires.
Actuellement Kraken est implémenté en Java, mais il est tout à fait possible d’imaginer d’autres langages de programmation (développement en cours).

Caractéristiques de Kraken

  • Puissance d’expression pour les instructions d’extraction ;
  • extraction de champs, listes et tables ;
  • extraction et transformation de champs simples tels que des chaînes de caractères, des nombres, emails, numéro de téléphone, URL, images ;
  • extraction de champs structurés, par exemple une adresse postale structurée en termes de rue, localité et NPA ;
  • sources de données pour l’extraction : HTML, XML, texte, PDF, etc. ;
  • navigation sur plusieurs pages Web (des centaines, milliers ou millions !) ;
  • possibilité de remplir des champs d’entrée sur un site Web de façon automatique ;
  • supporte les cookies, l’authentification simple ou le SSL ;
  • exécution distribuée et parallèle (bientôt disponible), itérations en séquence ou aléatoires ;
  • mise à jour incrémentale des données (bientôt disponible) ;
  • intégration des données depuis des sources différentes ;
  • cache HTTP intégré ;
  • debugger et moniteur d’exécution ;
  • supporte des irrégularités dans les données source ;
  • format de sortie : XML, texte, CVS, Excel, SQL DB... ;
  • extension facile pour de nouvelles fonctionnalités.

Exemple : extraire le catalogue des vins d’un magasin sur Internet

Le catalogue de vins en ligne de Denner contient environ 250 vins différents, sur une cinquantaine de pages. Nous sommes intéressés par tous les attributs disponibles, tels que le nom, l’origine, le millésime, le cépage, le prix, etc. (fig.1)

JPEG - 13.9 ko
fig. 2
schéma de la base de données


L’extraction des informations se fait dans une base de données, c’est-à-dire dans une forme structurée. Il est donc nécessaire de définir le schéma de cette base de données (fig. 2).

GIF - 4.8 ko
fig. 1
copie d’écran de www.denner.ch



L’étape suivante est la programmation de ce que nous appelons un extracteur. Le logiciel que nous avons développé permet d’exprimer les actions de l’extracteur avec une grande flexibilité, en définissant des composants et en utilisant leurs ports de données pour les connecter entre eux. Pour l’instant, nous avons une librairie d’environ quarante composants spécialisés. Leur fonctionnement peut être influencé par des paramètres, les rendant ainsi très flexibles. Un exemple de composant est celui qui effectue une requête HTTP, ou encore celui qui extrait certaines données à partir d’un fragment XML.

JPEG - 22.3 ko
fig. 3
exemple du code source en Java d’une partie de l’extracteur



La figure 4 montre une représentation visuelle d’une autre partie de l’extracteur, chaque boîte représentant un composant spécialisé, et les lignes entre les composants représentant un transfert de données.
Enfin, l’exécution de l’extracteur remplit la base de donnée selon le schéma défini précédemment. Les données sont directement exploitables avec des requêtes SQL.

GIF - 4.2 ko
fig. 4
les composants sont connectés entre eux par des ports entre lesquels transitent des données. Un port de sortie peut être connecté à plusieurs ports d’entrée.



Extraire le catalogue de produits d’un site Internet est une tâche relativement simple, mais elle montre bien les techniques à mettre en oeuvre pour la réaliser. Dans cet exemple de catalogue de vins, il n’y a que 250 produits, mais il pourrait y en avoir tout aussi bien 250’000. Ce qui est important, c’est qu’au lieu d’implémenter une solution ad hoc, il vaut mieux faire appel à des outils spécialisés qui offrent la puissance et la flexibilité nécessaire.

Atelier

Des ateliers de deux heures sont organisés au mois de mars à l’EPFL. Les deux premières dates prévues sont le lundi 9 mars et le mercredi 11 mars. Ouverts au public et gratuits pour tous les étudiants et personnel de l’EPFL, des connaissances en programmation sont recommandées.
Nous organisons aussi d’autres ateliers avec une vue plus générale, en expliquant quels datasets (gratuits ou payants) on peut déjà trouver sur le marché, comme par exemple, DBPedia (une version structurée de Wikipedia), geonames.org, data.un.org (base de données de l’ONU), tvtv.co.uk (guide TV), Internet Movie DB et MusicBrainz (base de données de musique).
Pour des questions d’organisation, nous vous remercions de vous inscrire sur notre site.

GIF - 12.2 ko
fig. 5
les données structurées dans MySQL Query Browser.



Cherchez ...

- dans tous les Flash informatique
(entre 1986 et 2001: seulement sur les titres et auteurs)
- par mot-clé

Avertissement

Cette page est un article d'une publication de l'EPFL.
Le contenu et certains liens ne sont peut-être plus d'actualité.

Responsabilité

Les articles n'engagent que leurs auteurs, sauf ceux qui concernent de façon évidente des prestations officielles (sous la responsabilité du DIT ou d'autres entités). Toute reproduction, même partielle, n'est autorisée qu'avec l'accord de la rédaction et des auteurs.


Archives sur clé USB

Le Flash informatique ne paraîtra plus. Le dernier numéro est daté de décembre 2013.

Taguage des articles

Depuis 2010, pour aider le lecteur, les articles sont taggués:
  •   tout public
    que vous soyiez utilisateur occasionnel du PC familial, ou bien simplement propriétaire d'un iPhone, lisez l'article marqué tout public, vous y apprendrez plein de choses qui vous permettront de mieux appréhender ces technologies qui envahissent votre quotidien
  •   public averti
    l'article parle de concepts techniques, mais à la portée de toute personne intéressée par les dessous des nouvelles technologies
  •   expert
    le sujet abordé n'intéresse que peu de lecteurs, mais ceux-là seront ravis d'approfondir un thème, d'en savoir plus sur un nouveau langage.