Manuel de scraping

Author

Bénédicte Garnier, Léo Henry, Frédéric Vergnaud

Published

September 19, 2024

Préface

Les données du Web représentent aujourd’hui une source inédite pour les chercheurs en sciences sociales. Ces données peuvent constituer aussi bien des compléments aux enquêtes “traditionnelles” en rendant compte de pratiques “en train de se faire”, que des matériaux originaux et divers pour l’analyse de thèmes aussi divers et variés que le sont les sites internet: de l’analyse des marchés matrimoniaux grâce aux profils sur les sites de rencontres, à celle des médias grâce aux articles de journaux ou de billets associatifs en passant par celle des représentations grâce aux réseaux sociaux. [ajouter ref] Maîtriser les techniques d’extraction de contenus, que l’on appelle plus souvent le scraping, rend possible la constitution de ces grandes bases de données.

Le scraping est une méthode qui semble au premier regard relativement aisée à mettre en oeuvre. Les données web sont sous nos yeux, elles sont faciles et gratuites d’accès. En outre, de nombreux sites web regorgent de tutoriels de descriptions de méthodes, toutes plus robotisées et automatisées les unes que les autres. Pourtant, une fois le copier/coller de l’exemple donné effectué, une fois quelques paramètres modifiés donnant l’impression de maîtrise de l’outil, force est de constater que l’ingénieur ou le chercheur en sciences sociales aura bien du mal à appliquer la méthode décrite en marketing ou en data-mining pour ses propres recherches en sociologie ou en histoire. De nombreux services ne s’y trompent pas, et il n’est pas rare de se voir demander quelques centaines d’Euros par mois ou quelques milliers d’Euros en une seule fois pour un nombre limité d’extraction ou de pages extraites [mettre tableau fait en 2019 en annexe ?]

Avant de vous lancer

  • scraping = coût de mise en oeuvre important : comprendre la structure de la page, programmer le robot
  • voir avant si : interface d’interrogation (type Europresse), téléchargement de données d’entrepôts de données, mise à disposition d’une API; …etc.

Le principe du scraping

Le scraping de données, c’est à dire l’extraction de données en ligne, se déroule selon ces grandes étapes :

  • Sélectionner sur une page web des informations à extraire.
  • Sélectionner éventuellement la pagination permettant d’atteindre les pages de structure identique et de même niveau.
  • Recommencer le processus autant de fois que l’on veut pour des pages de niveaux inférieurs.
  • Extraire, ou scraper l’ensemble de la sélection.
  • Obtenir finalement les données extraites sous un format lisible et utilisabe pour analyse future.

D’un point de vue technique, la sélection d’éléments à extraire utilise l’identification d’éléments HTML au sein de la structure d’une page web pour pouvoir en extraire les données. Nous utilsons pour cela des sélecteurs CSS ou XPath. Dans ce manuel, nous évoquerons brièvement quelques notions XPath, mais nous concentrerons sur les sélecteurs CSS.

Lorsque la sélection est effectuée, les scripts ou logiciels que nous allons utilisés vont cibler ces éléments pour en extraire l’information demandée. Pour simplifier notre propos, nous nous limiterons dans ce manuel à l’extraction de texte.

Des outils différents selon les affinité de chacun

Ce manuel s’adresse à tous ceux qui sont amenés à extraire des données du Web en sciences sociales. Il présente de manière didactique et illustrée par de nombreux exemples les éléments clés du scraping et de sa mise en oeuvre à partir de logiciels que l’on appelle open-source, c’est à dire dont le code source est ouvert, et accessibles librement sans restrictions ni contreparties. L’éventail des logiciels choisis dans ce manuel permet en outre à chacun de s’essayer à la tâche en fonction de ses affinités ou de son niveau de connaissances de certains langages de programmation, en informatique générale ou en statistique.

  • RVest, développé par Hadley Wickham, est un paquet R. Il sera privilégié par les utilisateurs qui maîtrisent les fonctions de base du logiciel R;
  • Scrapy, développé par Pablo Hoffman, est un framework Python. Il sera privilégié par les utilisateurs qui maîtrisent les principales caractéristiques du langage Python;
  • RSelenium, développé par John Harrison, est un portage de Selenium, qui est un framework d’interaction avec les navigateurs Web, pour R. Comme RVest, il sera privilégié par les utilisateurs qui maîtrisent les fonctions de base du logiciel R;
  • Extractify, développé par Frédéric Vergnaud, est un logiciel munie d’une interface. Il sera privilégié par les utilisateurs qui ne maîtrisent pas de langage de programmation;

Le manuel explique non seulement comment extraire des données du Web, mais aussi comment les nettoyer, les préparer et les traiter, en proposant une application d’analyse textuelle avec le paquet de R, R.temis, développé par Milan Bouchet-Valat. Il expose ainsi au lecteur une application du scraping de A à Z, de l’extraction au traitement et à l’interprétation, en passant par le nettoyage et la préparation des données.

Organisation du manuel

Dans une première partie introductive, ce manuel aborde les notions qui nous semblent indispensables à l’acquisition de bonnes pratiques de scraping.

La collecte d’informations sur le Web pose un certain nombre de limites aussi bien juridiques que scientifiques. Nous traiterons donc dans un premier temps des questions juridiques et éthiques relatives à l’extraction et l’utilisation de données issues du Web, et dispenserons un certain nombre de conseils relatifs à nos expériences.

L’extraction de données Web demande en outre un minimum de compréhension du fonctionnement d’internet et de la manière dont est structurée une page web. Dans un second et troisième temps, nous expliquerons de manière rapide mais précise le fonctionnement d’internet, les éléments du langage HTML à maîtriser pour réaliser un scraping, ainsi que la structuration générale d’un site web en évoquant les notions de niveau et de profondeur.

Lorsque ces jalons de compréhension seront posés, nous serons en mesure d’identifier correctement l’information à extraire. C’est l’objet de la dernière partie de cette introduction.

La deuxième partie du manuel présente une mise en oeuvre pas-à-pas de chaque outil sur un site stable et unique fondé et maintenu par l’équipe de Scrapy spécifiquement pour l’entraînement au scraping : Quotes to Scrape. Chacun de ces outils est décrit en trois étapes relatives à trois niveaux de complexité. À chaque étape sont présentés les éléments préalables de préparation, puis de réalisation du scraping. Les explications sont accompagnées du code – lorsqu’il s’agit d’un outil utilisant R ou Python – et d’images des captures d’écran.

La troisième partie se veut une partie d’opérationnalisation de la technique du scraping sur le site web de la revue Population. Il présente ainsi une utilisation appliquée des outils Rvest, Scrapy et Extractify en exposant les bonnes pratiques du scraping.

Enfin, la dernière partie expose la manière dont peut être appliquée l’analyse textuelle à des données scrapées à l’aide du paquet R.temis. Nous montrons comment des analyses sur des mots ou des chaînes de caractères permettent de “nettoyer” les données pour ne garder qu’un ensemble cohérent à analyser. Finalement une interprétation de méthodes de lexicométrie montre des exemples de résultats possibles.