Libérez nos données pour les pauvres : le scraping

Cet article décrit les grands principes d'une l'application PHP/MySQL développée pour la bibliothèque de l'école nationale des chartes, ses objectifs, ainsi que les technologies utilisées.
Elle est visible à l'adresse http://catalogue.enc.sorbonne.fr

Principes généraux

L'objet de cette application est de compléter l'interface publique (OPAC) du
catalogue de la bibliothèque de l'école des chartes en utilisant des ressources
informatiques courantes, à savoir PHP et MySQL. L'OPAC initial est fourni par le
logiciel Portfolio, de la société Isacsoft, dans une version aujourd'hui
obsolète.

Aucune connexion n'étant possible à la base de données de ce progiciel propriétaire,
l'utilisation de la méthode du scraping est nécessaire. Cette
méthode consiste à simuler des requêtes HTTP envoyées à l'OPAC puis à "gratter"
(to scrap en anglais) la page pour en retirer les
informations jugées pertinentes. cette méthode est rendue possible par la librairie
CURL, implantée sur les serveurs Apache / PHP sous le nom
php4-curl ou php5-curl. Cette librairie
doit être installée par l'administrateur du serveur. Elle n'est donc pas toujours
disponible sur les serveurs mutualisés

Objectifs fonctionnels

Les objectifs de l'application sont les suivants:

  • Intégration à la nouvelle charte graphique du site institutionnel;

  • Connexion avec le fichier topographique informatisé, application locale
    PHP/MySQL pour aider les lecteurs à repérer les documents dans la
    bibliothèque;

  • Permettre l'affichage d'un plan de repérage des ouvrages dans la
    bibliothèque;

  • Possibilités de listes préenregistrées pour mettre en valeur certains
    documents;

  • Demandes en ligne de transferts inter-site par e-mail;

  • Recherche assistée par une complétion automatique sur les noms d'auteurs
    et les sujets;

  • Établir des statistiques de consultation du catalogue informatisé;

  • Extension de recherche pour Mozilla Firefox.

  • Possibilité d'enregistrement de références bibliographiques sur des sites
    de bookmarking.

Organisation générale

La page d'accueil est composée du fichier index.php, qui commence
par vérifier le bon fonctionnement de l'OPAC Portfolio, avant d'afficher le formulaire
de recherche.

Le fichier d'accueil reprend donc le formulaire de l'OPAC Portfolio, en l'intégrant
dans la nouvelle charte graphique de l'établissement: form.php est
inclus dans index.php à l'endroit nécessaire.

Le formulaire effectue les premières vérifications de saisie et transmet les requêtes
au fichier recherche.php.

Le fichier recherche.php est un conteneur pour le fichier qui
opère toutes les interrogations de l'OPAC, à savoir scrap.php.

Le fichier scrap.php réalise les opérations suivantes:

  1. connexion à l'OPAC et transmission du cookie nécessaire pour effectuer une
    recherche;

  2. nettoyage et transmission de la requête de l'utilisateur à l'OPAC;

  3. enregistrement des éléments importants de la requête de l'utilisateur dans une
    base MySQL, à des fins statistiques (optionnel);

  4. récupération des résultats et opérations sur ces résultats:

    - recherche de l'ISBN pour afficher la couverture à partir du site amazon.com;

    - recherche de la cote enregistrée au niveau de la notice bibliographique
    (cote bibliographique) ou de l'exemplaire( cote exemplaire);

  5. Si la notice ne comporte pas d'exemplaire, la cote est recherchée dans la notice bibliographique ;

  6. Si la notice est celle d'un périodique (affichage particulier), le fichier
    scrap_perio.php est appelé.

  7. Si la notice est celle d'une monographie, le nombre d'exemplaires est recherché et un fichier particulier est appelé autant de fois qu'il y a d'exemplaires.

  8. interrogation de l'application topographique, récupération des informations
    d'emplacement à partir de la cote de l'ouvrage;

  9. remplacements dans la page renvoyée au navigateur:

    - emplacement de l'ouvrage, déterminé à partir de la cote bibliographique ou
    de/des cote(s) exemplaire(s);

    - réécriture des rebonds pour rester dans l'application et ne pas repartir sur
    l'OPAC d'origine;

    - remplacements pour afficher la couverture à partir du site amazon.com;

    - suppression des barres de navigation;

    - suppression de certaines images et de portions de code HTML propres à l'OPAC
    Portfolio;

    - suppression des messages d'erreur de l'OPAC Portfolio;

    - suppression du lien cassé vers une page sur les droits d'auteur;

    - ajout de liens vers des sites de bookmarking (del.icio.us, digg, connotea);

    - mise en valeur de la chaîne recherchée.

Si vous êtes sages, je vous expliquerai comment faire du scraping en PHP, avec de belles expressions régulières...

En fait, ça ne fait que commencer, puisque maintenant les données sont librement accessibles et utilisable ;-)

A vos idées !