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

lab03_webscraping.Rmd 2.4KB

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