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
-
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électeursxpath
andcss
. 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. ↩︎