rvest return {xml_nodeset (0)} - PullRequest
       8

rvest return {xml_nodeset (0)}

0 голосов
/ 22 марта 2020

Я пытаюсь очистить фрейм данных на следующем веб-сайте

https://infogram.com/detallecasos-1h7z2l9yqgdy2ow

с использованием пакета rvest в R.

Но я получаю

{xml_nodeset (0)}

Я пытался ее решить, с несколькими ответами на стек, но не смог. Я ценю, кто может мне помочь.

library(rvest)

read_html("https://infogram.com/detallecasos-1h7z2l9yqgdy2ow") %>% 
  html_nodes('table') %>%
  html_table(fill = TRUE)

Ожидаемый результат

enter image description here

1 Ответ

0 голосов
/ 23 марта 2020

Вот код, который возвращает таблицу

library(rvest)
library(stringr)
library(rjson)
library(data.table)

pg <- read_html("https://infogram.com/detallecasos-1h7z2l9yqgdy2ow") 
Mat <- pg %>% html_nodes("body") %>%
  html_nodes("script:contains('window.infographicData')") %>%
  html_text() %>% str_extract(string = ., pattern = "\\[\\[.*\\]\\]") %>% 
  substr(x = ., start = 2, stop = nchar(.)-1) %>% fromJSON() %>%
  do.call(rbind, .)

colnames(Mat) = Mat[1, ]

DT <- as.data.table(Mat[-1,-1])
DT
     Fecha de diagnóstico Ciudad de ubicación Atención    Edad Sexo       Tipo* País de procedencia
  1:           06/03/2020              Bogotá     casa 10 a 19    F   Importado              Italia
  2:           09/03/2020                Buga hospital 30 a 39    M   Importado              España
  3:           09/03/2020            Medellín     casa 50 a 59    F   Importado              España
  4:           11/03/2020            Medellín     casa 50 a 59    M Relacionado            Colombia
  5:           11/03/2020            Medellín     casa 20 a 29    M Relacionado            Colombia
 ---                                                                                               
227:           22/03/2020                Cali     casa 20 a 29    M   Importado      Estados Unidos
228:           22/03/2020                Cali     casa 20 a 29    M   Importado              España
229:           22/03/2020               Yopal     casa 30 a 39    F Relacionado            Colombia
230:           22/03/2020             Armenia     casa 30 a 39    F Relacionado            Colombia
231:           22/03/2020                Cali     casa 40 a 49    F Relacionado            Colombia
...