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.

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

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

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

    Hébron : des blessés palestiniens lors d’attaques de l’armée et de colons sionistes

    Dix Palestiniens ont été pris en charge à Hébron. D’autres incidents, arrestations et sièges de maisons ont été signalés en Cisjordanie.

    Syrie : une enquête annoncée après l’hospitalisation de Mohamed Ghmira

    Les autorités de Lattaquié annoncent une enquête après l’hospitalisation de Mohamed Ghmira. Le cas d’Abd al-Salam Akko ravive aussi le débat sur les détenus en Syrie.

    Liban : 11 morts après des frappes de l’État sioniste dans le Sud

    L’armée de l’État sioniste affirme avoir tué un commandant du Hezbollah. Les frappes de samedi ont fait 11 morts et 19 blessés, d’après le bilan rapporté.

    Iran : deux médiations en attente autour du détroit d’Ormuz

    Mascate travaille avec Téhéran sur l’organisation du trafic maritime, tandis qu’une initiative pakistanaise vise à rétablir un canal politique avec Washington.

    Syrie : des milliers de dounams agricoles endommagés à Quneitra

    La direction de l’agriculture de Quneitra évalue à plus de 4 800 dounams les pâturages, cultures d’hiver et vergers endommagés après des épandages signalés en janvier.

    Détroit d’Ormuz : condamnations du Golfe après trois attaques contre des navires d’ADNOC

    Trois navires d’ADNOC ont été visés dans le détroit d’Ormuz en deux soirs. Les pays du Golfe ont condamné les attaques.

    Gaza : une délégation du Hamas attendue au Caire pour discuter de l’accord

    Conduite par Khalil al-Hayya, une délégation du Hamas est attendue au Caire pour discuter de l’accord de cessez-le-feu à Gaza.

    Coupe du Roi d’Arabie saoudite : les 32es de finale lancent la 40e édition

    La Coupe du Roi d’Arabie saoudite lance ses 32es de finale sur quatre jours, avec 32 clubs engagés dans cette 40e édition.

    à Lire

    Categories