Exploiting web archives with scrapping

Le web scraping ou harvesting (le moissonnage du web) est une technique visant à extraire le contenu d’un site web via l’utilisation d’un programme informatique comme R ou Python. Un web scraper prend comme input un url, ou une liste d’url, et extrait de manière automatisé les informations de ces pages.

Les pages web sont écrites en langage html (pour Hypertext Markup Language). Le langage html est un langage qui structure les données, principalement textuelles, des sitewebs. Un site web est un document html, qui a été mis en ligne et que vos navigateurs web sont capables de lire. Ce propre guide est écrit en html.

Il n’y a absolument pas besoin de connaitre le langage html pour faire du web scraping. Il est uniquement nécessaire de comprendre comme html structure les données d’un site web. html est un langage de balisage, c’est-à-dire un langage qui structure des données à l’aide de balises (LateX est un autre exemple de langage de balisage). Les balises dans html sont représentées par les caractères spéciaux < et \> dans lequel les données sont contenues. A l’intérieur de ces balises, nous pouvons trouver du texte et d’autres ressources comme des images, des vidéos, des liens hypertextes.

Il est possible de vous donner une première idée de la manière dont html structure les données en inspectant n’importe quelle page web. Il vous suffit de surligner un texte, de cliquer droit dessus, puis de cliquer sur inspecter. Vous tomberez directement sur la balise qui contient les informations sur ce texte. A l’aide de R ou Python, il est facile d’automatiser cette procédure. A partir d’une url donnée, le programme récupère le code html, extrait les informations de cette balise (exemple d’implémentation sur R à dérouler).1

# des packages pour manipuler et mettre en forme les
# données (optionnelles)
library(dplyr)
library(knitr)
library(kableExtra)

# rvest est le package de référence dans R pour le web
# scrapping
library(rvest)

# je récupère une adresse url
url <- "https://rehpere.org/dorian-jullien"

# mon programme récupérère le code html de cette page
text <- read_html(url) %>%
    # je sélectionne la balise qui m'intéresse (voir un
    # tutoriel sur les selecteurs xpath et css)
html_element(xpath = "/html/body/main/div/div/article/div[2]/p[2]") %>%
    # je récupère le texte dans cette balise
html_text()

# je met en forme dans un tibble
tibble(Nom = "Dorian Jullien", Bio = text) %>%
    kbl() %>%
    kable_minimal() %>%
    kable_styling(full_width = F, latex_options = c("scale_down",
        "HOLD_position"))
Nom Bio
Dorian Jullien Mes recherches portent sur la théorie du choix rationnel en économie de manière générale, et plus particulièrement sur son rôle en économie comportementale et expérimentale.

Sur R le package rvest est le principal packages permettant de construire un web scrappeur. rselenium permet de naviguer directement sur internet. Combinés à rvest, ce deuxième package permet de collecter des données sur des pages web dynamiques. Dans ces dernières le document html peut varier selon la personne qui consulte la pageweb. Par exemple, Facebook est un site internet dynamique où la consultation de l’url “https://www.facebook.com/” dépendra de l’utilisateur.

References


  1. Une dernière difficulté est de faire comprendre à notre programme quelle est la balise qui nous intéresse. Pour cela, vous devez sélectionner la partie du code html qui nous intéresse à l’aide de sélecteurs xpath and css. Vous trouverez facilement une explication complète des sélecteurs sur les guides dédiés au web Scraping qui sont légions sur internet. ↩︎

Thomas Delcey
Thomas Delcey
Assistant Professor in Economics