Warning: Undefined array key "options" in /htdocs/wp-content/plugins/elementor-pro/modules/theme-builder/widgets/site-logo.php on line 192
Web scraping avec R - Rstudio Data
Débuter avec R

Web scraping avec R

Share

[et_pb_section admin_label= »section »]
[et_pb_row admin_label= »row »]
[et_pb_column type= »4_4″][et_pb_text admin_label= »Text »]

Le web scraping est le processus de récupération de données sur le web à partir de sites internet. Cela peut être utile pour récupérer des données à des fins de recherche, de veille technologique ou simplement pour créer un historique de données pour une analyse ultérieure. Aujourd’hui je vous propose de vous guider pas-à-pas pour découvrir comment scraper des informations sur le web grâce au package Rvest pour R.

Webscraping avec rvest et RStudio

Le package R « rvest » est le package de référence pour réaliser du scrapping web avec R. Il contient une série de fonctions qui facilitent la récupération de données à partir de sites web. Les 8 fonctions suivantes devraient vous permettre de couvrir l’ensemble des vos besoins à savoir lire, analyser, extraire et interagir avec des données présentes dans des documents HTML, vous facilitant ainsi le web scraping et l’extraction d’informations à partir de sites web.

Principales fonctions Rvest

  1. read_html(): Cette fonction lit et analyse une page HTML à partir d’une URL ou d’un fichier local, permettant ainsi d’explorer et d’extraire des informations.
  2. html_nodes(): Cette fonction sélectionne des éléments spécifiques dans un document HTML en utilisant des sélecteurs CSS ou XPath.
  3. html_text(): Cette fonction extrait le texte des éléments HTML sélectionnés.
  4. html_attr(): Cette fonction extrait les attributs spécifiques des éléments HTML sélectionnés.
  5. html_table(): Cette fonction extrait les tables HTML et les convertit en un objet de type data frame.
  6. html_form(): Cette fonction extrait les formulaires HTML d’un document.
  7. submit_form(): Cette fonction soumet un formulaire HTML avec des données spécifiées.
  8. html_session(): Cette fonction crée une session web pour effectuer des requêtes HTTP, maintenir un état de connexion et conserver les cookies entre les requêtes.

Comment scraper avec Rvest

Après avoir installer le package avec install.packages("rvest"), ouvrez votre navigateur et la page contenant les données que vous souhaitez extraire et copier l’url. Nous allons commencer par créer un objet pour stocker cette url, puis nous allons lire cette url avec la fonction read_html().

url <- "http://www.monsite.com/ma_page.html"
page <- read_html(url)

Explorer le code de la page grace à votre console navigateur

en faisant un clic droit sur la page puis « inspecter » vous allez ouvrir la console de votre navigateur internet. A partir d’ici, vous allez pouvoir repérer le code des différent éléments que vous souhaitez extraire de la page

Sélectionnez les données que vous souhaitez récupérer à l’aide de sélecteurs CSS, les « div class= » par exemple ou le XPath. Pour avoir ce dernier vous pouvez faire un clic droit sur le code « copy -> copy xpath » et il devrait ressembler à quelque chose comme cela : « //*[@id= »main-content »]/div[2]/div/div[4]/div/div[1]/div[1] » Ces sélecteurs vous permettent de cibler spécifiquement les éléments de la page web que vous souhaitez récupérer.

Pour extraire les données des sélecteurs, vous devez utiliser la fonction html_nodes() et convertir le contenu html sous forme de texte brut grâce à html_texte() comme suivant :

donnees <- html_nodes(page, "p") %>% html_text()

Exemple de Scrapping web du site d’elearning edx :

Nous allons maintenant scraper une formation « Responsabilité societale des entreprises » sur le site Edx disponible ici :

https://www.edx.org/professional-certificate/louvainx-responsabilite-societale-des-entreprises

#chargement des libraries
library("rvest")
library("tidyverse")

# création des objets url et page
url <- "https://www.edx.org/professional-certificate/louvainx-responsabilite-societale-des-entreprises"
page <- read_html(url)

# extraction des éléments de contenu titre, université, description de la formation, module de formation et prix :
title <- html_nodes(page, xpath='//*[@id="main-content"]/div[2]/div/div/div/div[2]/div[1]/div') %>% html_text()
university <- html_nodes(page, "div.institution") %>% html_text()
learning <- html_nodes(page, xpath='//*[@id="main-content"]/div[3]/div/div[1]/div[2]/div[1]/ul/li') %>% html_text()
overview<- html_nodes(page, "div.overview-info") %>% html_text()
modules <- html_nodes(page, "#main-content > div.gradient-wrapper.program-body.container-mw-lg.container-fluid > div > div.program-section.pr-0.pl-0.container-mw-lg.container-fluid > div > div > div") %>% html_text()
prix <- html_nodes(page, xpath='//*[@id="main-content"]/div[5]/div[1]') %>% html_text()

# Compilation des éléments dans une liste et export vers un fichier txt
liste <- c(url, title, university, prix, learning, overview, modules)
write(liste, "texte.txt")

le fichier txt devrait ressembler à cela :

Ce code réalise les étapes suivantes :

  1. Chargement du package « rvest« .
  2. Récupération de la page web à l’aide de la fonction « read_html ».
  3. Sélection des titres d’articles à l’aide de la fonction « html_nodes » et extraction du texte à l’aide de la fonction « html_text ».
  4. Sélection des liens d’articles à l’aide de la fonction « html_nodes » et extraction de l’attribut « href » à l’aide de la fonction « html_attr« .
  5. Création d’une liste avec l’ensemble des éléments
  6. Création d’un fichier d’export des éléments .txt

[/et_pb_text][/et_pb_column]
[/et_pb_row]
[/et_pb_section]

Tags:

You Might also Like

Related Stories

Next Up