More

    Scraping Web avec R : Guide Complet sur rvest

    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

    LAISSER UN COMMENTAIRE

    S'il vous plaît entrez votre commentaire!
    S'il vous plaît entrez votre nom ici


    Actualités

    L’acteur de Friends, Matthew Perry, décède à 54 ans

    "Matthew Perry, célèbre pour son rôle de Chandler Bing dans Friends, décède à 54 ans. Acteur très apprécié, sa mort suscite l'émotion mondiale."

    Entité sioniste déploie des navires de guerre en Mer Rouge selon un expert militaire

    Entité sioniste déploie des navires de guerre en Mer Rouge pour contrer les Houthis au Yémen, une manœuvre vue comme une démonstration de force envers l'Iran.

    L’affaire des SMS entre Pfizer et la Commission européenne : ce qu’il faut savoir

    En avril 2021, le New York Times a révélé...

    Banque suisse : Credit Suisse en chute libre après la faillite de la SVB

    L'action de Credit Suisse a dévissé de plus de...

    Le Retour de Microsoft avec Bing et Edge : Une Menace pour Google ?

    Depuis moins de trois mois, ChatGPT a déjà créé...

    Xi Jinping et Vladimir Poutine discutent à Beijing

    Xi Jinping et Vladimir Poutine tiennent des discussions à Beijing sur la Chine, la Russie, l’Ukraine et le Moyen-Orient.

    L’ONU révise à la baisse la croissance mondiale face à la crise au Moyen-Orient

    L’ONU abaisse ses prévisions de croissance mondiale à 2,5 % en 2026, citant la crise au Moyen-Orient et la hausse des prix de l’énergie.

    Xi Jinping reçoit Vladimir Poutine à Pékin: ce que révèle ce sommet sur l’axe Chine-Russie

    Le sommet de Pékin entre Xi Jinping et Vladimir Poutine confirme la solidité d’un partenariat central pour l’Ukraine, l’énergie et l’équilibre géopolitique mondial.

    Kentucky : Thomas Massie battu en primaire, Donald Trump impose son candidat

    Thomas Massie, élu républicain du Kentucky, a perdu sa primaire face à Ed Gallrein, candidat soutenu par Donald Trump, dans une course très coûteuse et symbolique.

    Hantavirus : pourquoi les autorités ne parlent pas d’un « nouveau Covid » et quels symptômes doivent vraiment alerter

    Le risque pour le grand public reste faible, mais le hantavirus peut être grave après exposition réelle. Voici ce que disent l’OMS et le CDC sur les symptômes, la transmission et la prévention.

    Le Sénat américain freine Trump sur la guerre contre l’Iran

    Le Sénat américain avance une résolution pour limiter les pouvoirs de guerre de Trump contre l’Iran, dans un rare revers présidentiel.

    Édouard Philippe visé par une information judiciaire: ce que change vraiment l’enquête ouverte au Havre

    L’ouverture d’une information judiciaire visant Édouard Philippe place désormais le dossier havrais sous l’autorité d’un juge d’instruction.

    Arsenal champion de Premier League : la fin d’une attente de 22 ans

    Arsenal retrouve enfin le titre de champion d’Angleterre, vingt-deux ans après la saison mythique des Invincibles.

    à Lire

    Categories