Home Industrie et technologieInformatique et internetScraping Web avec R : Guide Complet sur rvest

Scraping Web avec R : Guide Complet sur rvest

by Sara
France

Dans cet article, nous allons explorer le scraping web grâce à R et au package rvest. Ce guide complet vous permettra de mieux comprendre les différentes méthodes de scraping, comment extraire des données de plusieurs pages et surtout, comment respecter les sites cibles tout en effectuant ces opérations. Accrochez-vous, car nous allons plonger dans le monde du web scraping.

Le package rvest

Le package rvest pour R, développé par Hadley Wickham, est le package de scraping web le plus utilisé dans le langage R. Il facilite grandement l’analyse de données et le SEO en offrant des sorties de données propres et une notation fonctionnelle. Bien qu’il ne soit pas inclus dans le package Tidyverse, son installation est simple :

install.packages("rvest")

Ensuite, il est conseillé d’installer le Tidyverse :

library(tidyverse)

Avec rvest installé, nous pouvons commencer à scraper. Mais comment identifier ce que nous voulons extraire d’une page ? C’est ici qu’il est crucial de comprendre le fonctionnement du scraping et d’identifier nos points de données.

XPath et sélecteurs CSS

Les sélecteurs XPath et CSS sont les méthodes les plus couramment utilisées pour identifier les éléments sur une page, et il est essentiel de les comprendre pour scraper le web efficacement.

Qu’est-ce que XPath ?

XPath (XML Path Language) est une syntaxe utilisée pour sélectionner des nœuds dans un document. Pensez-y comme un moyen de repérer des parties spécifiques d’une structure d’arbre XML. XPath est puissant et rvest le prend en charge avec brio.

Qu’est-ce que les sélecteurs CSS ?

Les sélecteurs CSS sont le langage visuel du web, utilisés pour styliser et structurer les pages. Dans R, vous pouvez les utiliser pour extraire presque toutes les données dont vous avez besoin sur les pages web. rvest offre également un excellent support pour les sélecteurs CSS, qui sont en général plus efficaces à écrire et nécessitent moins de débogage.

XPath vs Sélecteurs CSS

Il est important de noter que les sélecteurs CSS sont généralement :

  • Plus faciles et plus efficaces à écrire : Un sélecteur CSS est généralement plus court et plus intuitif qu’une requête XPath.
  • Plus rapides à exécuter : En particulier si vous utilisez du CSS natif du navigateur.
  • Principalement conçus pour les pages HTML : Ils ne sont pas toujours bons pour naviguer dans l’arbre DOM.

D’un autre côté, XPath est :

  • Plus puissant : Vous pouvez effectuer des requêtes complexes et naviguer dans l’arbre DOM dans les deux sens.
  • Plus complexe : Les requêtes XPath sont généralement plus longues et plus difficiles à écrire et à maintenir.

Trouver des sélecteurs CSS et des requêtes XPath

Pour scraper une partie d’une page, il est nécessaire de connaître les éléments à extraire. Voici quelques méthodes pratiques pour trouver ces éléments avec Chrome :

Utiliser l’extension SelectorGadget

SelectorGadget est une extension Chrome gratuite qui permet de trouver facilement vos sélecteurs CSS ou XPath. Installez-la, puis naviguez vers la page que vous souhaitez scraper. Par exemple, pour extraire le titre d’un article, cliquez sur l’extension et survolez le titre.

SelectorGadget highlight article title

Vous verrez le sélecteur mis en surbrillance. Si vous cliquez sur le titre, le sélecteur apparaîtra dans la barre de l’extension.

SelectorGadget CSS selector highlight

Vous pouvez également obtenir la requête XPath en cliquant sur le bouton correspondant de l’extension.

XPath highlight in SelectorGadget

XPath popup from SelectorGadget

Utiliser les outils de développement Chrome

Les outils de développement de Chrome sont également très utiles. Faites un clic droit sur l’élément voulu et sélectionnez ‘Inspecter’. Cela ouvrira la fenêtre ‘Éléments’ où vous pourrez facilement trouver votre sélecteur CSS ou créer une requête XPath.

Using Chrome Developer Tools on an article title

En cliquant avec le bouton droit sur l’élément, vous pourrez copier votre sélecteur CSS ou votre requête XPath directement.

Chrome Developer Tools highlights article title

Scraper les titres d’articles avec R et les sélecteurs CSS

Un point important à retenir concernant les sélecteurs CSS est qu’ils varient généralement d’un site à l’autre. Écrivons un premier scraper en utilisant le package rvest pour extraire le titre de l’article d’un lien donné.

scrapeURL <- "https://www.ben-johnston.co.uk/r-for-seo-part-8-apply-methods-in-r/"

Le sélecteur sera :

.entry-title

Voici comment créer un appel de scraping simple :

articleTitle <- read_html(scrapeURL) %>% html_element(".entry-title") %>% html_text()

Scraper les titres de méta avec R et XPath

Pour extraire le titre méta, nous allons utiliser XPath. Comme auparavant, nous allons utiliser le même lien cible. Le titre méta n'étant pas visible sur la page, nous utiliserons les outils de développement Chrome pour le trouver.

articleMetaTitle <- read_html(scrapeURL) %>% html_element(, "//title") %>% html_text()

Scraper plusieurs éléments d'une page avec R

Pour scraper plusieurs éléments d'une page, nous allons créer une fonction qui extraira le titre méta, la description méta et le H1 d'un article. Voici comment nous allons procéder :

pageScrape <- function(x) { 
    pageContent <- read_html(x) 
    metaTitle <- html_element(pageContent,, "//title") %>% html_text() 
    metaDescription <- html_attr(html_element(pageContent, "meta[name='description']"), "content") 
    heading <- html_element(pageContent, ".entry-title") %>% html_text() 
    output <- data.frame(metaTitle, metaDescription, heading) 
    }

Scraping poliment avec le package Polite

Scraper des sites web peut être mal perçu par certains propriétaires. Le package Polite pour R permet de respecter les robots.txt et de réduire la charge sur le serveur. Pour l'installer, utilisez :

install.packages("polite") 
library(polite)

Ensuite, nous allons utiliser la fonction bow pour introduire notre environnement R auprès du serveur :

session <- bow("https://www.ben-johnston.co.uk")
Web Scraping R | Web Scraping | R | Rvest | Données | Seo | France

You may also like

Leave a Comment