-
Notifications
You must be signed in to change notification settings - Fork 1
Problèmes rencontrés lors du scraping de données
Cette page permet de lister quelques uns des problèmes techniques rencontrés lors de la récupération automatique de données (scraping) et les moyens mis en place pour les contourner.
Aides-territoires a pour but de centraliser les données concernant des aides proposées par de nombreux acteurs (Europe, régions, départements, Ademe, agences de l'eau, État via les services déconcentrés, etc.).
Pour ce faire, un des défis majeurs est d'accéder aux données, publiées par les apporteurs sous d'innombrables schémas différents et avec niveaux de maturité
Le site Aides-territoires fonctionne comme un répertoire d'« Aides » ; chaque Aide dispose de sa propre url sur le site.
Techniquement, une aide est modelisée par un jeu de données structuré par des « champs » prédéfinis. Ainsi, pour chaque aide, nous renseignons différents champs requis ou facultatifs :
- titre
- description
- apporteurs de l'aide
- périmètre
- conditions d'éligibilité
- type d'aide
- date d'ouverture du guichet pour le dépôt de dossier
- …
Cette structure sert plusieurs objectifs :
- disposer de suffisamment de données sur chaque aide proposée sur le site ;
- assurer un rendu suffisamment homogène.
Afin de remplir les objectifs du site, il nous faut référencer un très grand nombre d'Aides, proposées par de nombreux apporteurs.
Vue la quantité de données en jeu, il n'est pas possible d'assurer une saisie et mise à jour manuelle des aides présentes sur le site. Pour pallier cette impossibilité, nous avons mis en place un traitement automatisé de données qui nous permet de récupérer des aides publiées par différents apporteurs.
Chaque apporteur décide de publier ses aides d'une façon spécifique. Ainsi, il n'est pas possible de développer un mécanisme universel qui permettrait de récupérer des aides pour tous les apporteurs qui nous concernent. L'identification d'une nouvelle source de données donne lieu au développement d'un processus de traitement spécifique.
La mise en place d'un processus automatique d'import de données depuis une source tierce est le suivant :
- Identifier la source de la donnée. À quelle(s) url(s) sont publiées les aides à importer ?
- Évaluer la qualité de la donnée. L'apporteur publie-t-il suffisament de détail sur les aides pour que l'on puisse les re-publier ?
- Évaluer le modèle de partage de données (API, publication sur site web, lien vers des pdfs). Quelle sera la complexité technique d'analyse et de récupération des données.
- Évaluer la fréquence de mise à jour de données. À quel intervalle faut-il ré-importer les données ?
- Mise en place d'une pipeline d'import des données.
- Téléchargement et récupération des données.
- Nettoyage et mise en forme des données.
- Analyse et découpuage des données en différent champs structurés.
- Import des données et création d'Aides dans notre propre base.
- Envoi des données vers l'interface de contribution manuelle.
En fonction du mode de publication mis en place par un apporteur donnée, le traitement décrit plus haut donnera un résultat plus ou moins qualitatif.
Chaque source de données doit être traitée indépendamment. Néanmoins, de nombreux traitements peuvent être mutualisés. Ainsi, un modèle générique de pipeline a été créé, qu'il suffit de surcharger pour chaque nouvelle source de données.
Certaines sources de données ne fournissent pas de moyen d'identifier une aide de manière unique. Ainsi, à chaque import, il est impossible de savoir avec certitude si telle aide a déjà été importée ou non.
Pour pallier à ce problème, nous attribuons à chaque aide importée une référence d'import unique que nous construisons au cas par cas en fonction des données présentes (e.g en combinant titre + date de publication).
Évidemment, ce n'est pas fiable à 100%. Par exemple, un éditeur qui modifie le titre d'une aide nous amènera à la considérer comme une nouvelle aide.
Certains éditeurs ne fournissent pas de date de publication ni de dernière mise à jour des aides. Ainsi, il ne nous est pas possible de savoir si une aide a été modifiée depuis le dernier import.
Étant donné l'impossibilité d'effectuer toutes les mise en conformité avec notre modèle automatiquement, un retraitement manuel est nécessaire et la publication effective de l'aide sur notre site est soumise à revue par un administrateur.
Beaucoup de sources de données contiennent du texte présentant plusieurs problèmes empêchant leur republication telle quelle :
- présence de styles embarqués directement dans le html
- présence de caractères inhabituels issus de copier-coller de logiciels tels que word
- présence de scripts js embarqués directement dans le html
- présence de balises html non-standard, obsolètes ou qui casseraient notre propre mise en page
Pour contourner ces problèmes, tous les contenus textuels importés passent systématiquement dans [une « moulinette de nettoyage »]
De nombreuses sources de données sont peu complètes et ne donnent que peu d'informatins mis à part une description sommaire de l'aide et un lien vers des fichiers pdf / word contenant les détails.
Pour pallier ce problème, nous avons été amené à alléger les contraintes imposées à nos propres données et à nous résoudre à afficher des données moins riches.
Un traitement éditorial manuel est également réalisé sur chaque aide publiée.
Les données sont très souvent proposées sous une forme non structurée, par exemple du texte simple sur une page Web. Ainsi, les données sont présentes (e.g date d'ouverture des guichets, date limite de soumission) mais ne peuvent être identifiées automatiquement.
À part contacter les éditeurs ou retraiter manuellement les aides, il ne nous est pas possible de pallier à ce problème.
Il est rare que notre modèle de données corresponde exactement aux données proposées par les apporteurs. Pour obtenir une correspondance, une action manuelle est souvent nécessaire.