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éé...

    Trump menace l’Iran : frappes massives annoncées dans 2-3 semaines

    Trump menace des frappes « très puissantes » contre l'Iran dans 2-3 semaines, visant à détruire ses capacités militaires et nucléaires. Pays concernés : USA, Iran.

    Abu Obeida salue les mobilisations syriennes pour al‑Aqsa et les détenus

    Abu Obeida salue les manifestations en Syrie en soutien à al‑Aqsa et aux prisonniers palestiniens. Pays concernés : Syrie, Palestine, Israël.

    Un juge suspend la construction du ballroom de 400 M$ de Trump

    Un juge fédéral bloque temporairement le projet de ballroom à 400 M$ de Donald Trump à la Maison-Blanche en attendant l'autorisation du Congrès.

    Trump veut partir en 2-3 semaines et défie ses alliés sur le pétrole

    Trump affirme que les États-Unis pourraient mettre fin à la guerre contre l'Iran en 2-3 semaines et invite les alliés à se procurer leur propre pétrole.

    Gâteau au citron sans gluten, recette végétarienne

    Envie d'un gâteau au citron sans gluten, recette végétarienne, ultra moelleux grâce à une purée de pommes de terre?

    Interceptions au Koweït, Arabie saoudite et EAU; attaques en Irak

    Défenses aériennes ont intercepté missiles et drones au Koweït, Arabie saoudite et EAU; incidents et frappes signalés en Irak et Bahreïn.

    Guerre en Iran : quel dilemme stratégique pour la Chine ?

    Face à la guerre américano-israélienne contre l'Iran, la Chine privilégie prudence et diplomatie : le conflit teste sa stratégie et ses intérêts.

    Dirigeante du KMT accepte l’invitation de Xi et visitera la Chine

    La cheffe du KMT Cheng Li-wun accepte l'invitation de Xi Jinping pour une visite en Chine (7-12 avril) afin de promouvoir dialogue et paix avec Taïwan.

    à Lire

    Categories