25개 이상의 토픽을 선택하실 수 없습니다. Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

140 lines
2.4KB

  1. ---
  2. title: "Web scraping"
  3. author: "Maxime Wack"
  4. date: "17/11/2020"
  5. output:
  6. xaringan::moon_reader:
  7. css: ['default','css/my_style.css']
  8. lib_dir: libs
  9. seal: false
  10. nature:
  11. ratio: '4:3'
  12. countIncrementalSlides: false
  13. self-contained: true
  14. beforeInit: "addons/macros.js"
  15. highlightLines: true
  16. ---
  17. ```{r setup, include=FALSE}
  18. knitr::opts_chunk$set(echo = TRUE, fig.asp= .5)
  19. library(tidyverse)
  20. library(DT)
  21. library(knitr)
  22. options(DT.options = list(paging = F,
  23. info = F,
  24. searching = F))
  25. datatable <- partial(datatable, rownames = F)
  26. ```
  27. class: center, middle, title
  28. # UE Visualisation
  29. ### 2020-2021
  30. ## Dr. Maxime Wack
  31. ### AHU Informatique médicale
  32. #### Hôpital Européen Georges Pompidou, </br> Université de Paris
  33. ---
  34. # Web scraping
  35. ### Utilisation de `httr` et `rvest`
  36. ## httr
  37. Permet de faire des requêtes réseau
  38. → interroger et télécharger directement depuis R
  39. ## rvest
  40. Extraction de données depuis des pages HTML
  41. ---
  42. # httr
  43. ```{r init, echo = F, message = F, error = F}
  44. library(tidyverse)
  45. library(httr)
  46. library(rvest)
  47. ```
  48. Télécharger une page wikipedia
  49. ```{r dl wikipedia}
  50. GET("https://en.wikipedia.org/wiki/Comparison_of_operating_systems") -> wiki
  51. ```
  52. ```{r dl wikipedia do, echo = F}
  53. wiki
  54. ```
  55. ---
  56. # Parsing HTML
  57. ```{r html}
  58. wiki %>%
  59. read_html -> wiki_html
  60. ```
  61. ```{r html do, echo = F}
  62. wiki_html
  63. ```
  64. ---
  65. # Sélecteurs CSS
  66. [W3Schools](https://www.w3schools.com/cssref/css_selectors.asp)
  67. ### Selecteurs permettant d'identifier un **nœud** précis dans le **DOM** (Document Object Model) d'une page HTML
  68. ### Permet de sélectionner par identifiant, classe, position dans la hiérarchie, position entre élements d'un même niveau, ou relativement entre élements
  69. ### Utiliser l'**inspecteur** des outils de développement du navigateur pour identifier les éléments à capturer
  70. ---
  71. # Sélecteurs CSS
  72. ```{r tables}
  73. wiki_html %>%
  74. html_nodes(".wikitable")
  75. ```
  76. ```{r table}
  77. wiki_html %>%
  78. html_node("div + .wikitable")
  79. ```
  80. ---
  81. # Extraction d'une table
  82. ```{r scrape}
  83. wiki_html %>%
  84. html_node("div + .wikitable") %>%
  85. html_table -> wikitable
  86. ```
  87. ```{r scrape do, echo = F}
  88. datatable(wikitable)
  89. ```
  90. ---
  91. # Exercices
  92. ### Transformer cette table en forme normale
  93. ### Extraire la table avec les informations techniques
  94. ### Identifier les OS libres fonctionnant avec un microkernel