From 5d234a48e3da974aa1d383978fe0a991cdf333db Mon Sep 17 00:00:00 2001 From: Maxime Wack Date: Tue, 19 Nov 2019 06:49:48 +0100 Subject: [PATCH] Add lab 03 webscraping --- courses/lab03_webscraping.Rmd | 141 ++++++++++++++++++++++++++++++++++ 1 file changed, 141 insertions(+) create mode 100644 courses/lab03_webscraping.Rmd diff --git a/courses/lab03_webscraping.Rmd b/courses/lab03_webscraping.Rmd new file mode 100644 index 0000000..6f2b325 --- /dev/null +++ b/courses/lab03_webscraping.Rmd @@ -0,0 +1,141 @@ +--- +title: "Web scraping" +author: "Maxime Wack" +date: "19/11/2019" +output: + xaringan::moon_reader: + css: ['default','css/my_style.css'] + lib_dir: libs + seal: false + nature: + ratio: '4:3' + countIncrementalSlides: false + self-contained: true + beforeInit: "addons/macros.js" + highlightLines: true + pdf_document: + seal: false +--- + +```{r setup, include=FALSE} +knitr::opts_chunk$set(echo = TRUE, fig.asp= .5) +library(tidyverse) +library(DT) +library(knitr) + +options(DT.options = list(paging = F, + info = F, + searching = F)) + +datatable <- partial(datatable, rownames = F) +``` + +class: center, middle, title + +# UE Visualisation + +### 2019-2020 + +## Dr. Maxime Wack + +### AHU Informatique médicale +#### Hôpital Européen Georges Pompidou,
Université de Paris + +--- + +# Web scraping + +### Utilisation de `httr` et `rvest` + +## httr + +Permet de faire des requêtes réseau + +→ interroger et télécharger directement depuis R + +## rvest + +Extraction de données depuis des pages HTML + +--- + +# httr + +```{r init, echo = F, message = F, error = F} +library(tidyverse) +library(httr) +library(rvest) +``` + +Télécharger une page wikipedia + +```{r dl wikipedia} +GET("https://en.wikipedia.org/wiki/Comparison_of_operating_systems") -> wiki +``` + +```{r dl wikipedia do, echo = F} +wiki +``` + +--- + +# Parsing HTML + +```{r html} +wiki %>% + read_html -> wiki_html +``` + +```{r html do, echo = F} +wiki_html +``` + +--- + +# Sélecteurs CSS + +[W3Schools](https://www.w3schools.com/cssref/css_selectors.asp) + +### Selecteurs permettant d'identifier un **nœud** précis dans le **DOM** (Document Object Model) d'une page HTML + +### Permet de sélectionner par identifiant, classe, position dans la hiérarchie, position entre élements d'un même niveau, ou relativement entre élements + +### Utiliser l'**inspecteur** des outils de développement du navigateur pour identifier les éléments à capturer + +--- + +# Sélecteurs CSS + +```{r tables} +wiki_html %>% + html_nodes(".wikitable") +``` + +```{r table} +wiki_html %>% + html_node("div + .wikitable") +``` + +--- + +# Extraction d'une table + +```{r scrape} +wiki_html %>% + html_node("div + .wikitable") %>% + html_table -> wikitable +``` + +```{r scrape do, echo = F} +datatable(wikitable) +``` + +--- + +# Exercices + +### Transformer cette table en forme normale + +### Extraire la table avec les informations techniques + +### Identifier les OS libres fonctionnant avec un microkernel