|
- ---
- title: "Web scraping"
- author: "Maxime Wack"
- date: "17/11/2020"
- 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
- ---
-
- ```{r setup, include=FALSE}
- knitr::opts_chunk$set(echo = TRUE, fig.asp= .5)
- library(tidyverse)
- library(DT)
- library(knitr)
- library(httr)
- library(rvest)
-
- options(DT.options = list(paging = F,
- info = F,
- searching = F))
- ```
-
- class: center, middle, title
-
- # UE Visualisation
-
- ### 2020-2021
-
- ## Dr. Maxime Wack
-
- ### AHU Informatique médicale
- #### Hôpital Européen Georges Pompidou, </br> 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
-
- ```{r wiki table}
- # On identifie toutes les tables "wikitable"
- GET("https://en.wikipedia.org/wiki/Comparison_of_operating_systems") %>%
- read_html %>%
- html_nodes(".wikitable") -> wikitables
-
- # On extrait et parse les deux premières tables
- wikitables[[1]] %>% html_table -> table1
- wikitables[[2]] %>% html_table -> table2
-
- # On joint les tables, sélectionne les variables pertinentes et met en œuvre les filtres correspondant à l'énoncé
- inner_join(table1, table2) %>%
- select(Name, Creator, Cost = `Cost, availability`, License = `Preferred license[g 1]`, Kernel = `Kernel type`) %>%
- filter(Kernel %>% str_detect("[Mm]icrokernel"),
- License %in% c("AGPL", "BSD", "GNU GPL, GNU LGPL", "MIT", "MIT, GNU GPL, GNU LGPL, LPL"))
- ```
|