xpath с rvest не работает, возвращая пустой список

Я застрял при использовании "rvest" для извлечения данных COVID со страницы: https://www.cdc.gov/coronavirus-interactive/index.html

Спасибо за ваше время!

Вот мой код:

library("rvest")

url = "https://www.cdc.gov/coronavirus-interactive/index.html"

tbl <- url %>%
  read_html() %>%
  html_nodes(xpath = '//*[@id="viz030_widget5_table"]') %>%
  html_table(fill=TRUE)
tbl

person Sam Chang    schedule 24.04.2020    source источник


Ответы (1)


Он извлекается динамически. Вы можете получить необходимые данные в формате json из

https://www.cdc.gov/covid-data-tracker/Content/CoronaViewJson_01/US_MAP_DATA.json

Вы можете найти это на вкладке сети при обновлении исходной страницы.

library(jsonlite)

data <- jsonlite::read_json('https://www.cdc.gov/covid-data-tracker/Content/CoronaViewJson_01/US_MAP_DATA.json') %>% 
        .$US_MAP_DATA
person QHarr    schedule 25.04.2020
comment
Спасибо, QHarr! Я делал это раньше. Это сработало. Я хотел бы попробовать способ извлечения таблицы данных csv, не встроенной в HTML. Данные также можно загрузить напрямую. Мне просто любопытно, недоступен ли json. - person Sam Chang; 26.04.2020
comment
Возможно, я не понимаю. Данные отсутствуют в html, возвращенном с исходного URL. Вам необходимо сделать запрос, аналогичный приведенному выше. Затем вы можете зациклить возвращенную структуру, чтобы построить таблицу / df и записать в csv. - person QHarr; 26.04.2020
comment
Привет, QHarr! Я только что обнаружил, что предоставленный вами URL-адрес отличается от того, который я использовал для данных json. Как ты получил это? Спасибо! - person Sam Chang; 26.04.2020
comment
Изучите вкладку сети для нового запроса xhr, сделанного, когда вы щелкнете значок загрузки csv - вероятно, самый простой способ. У вас должна быть открыта вкладка сети одновременно. - person QHarr; 26.04.2020
comment
Понятно. Спасибо, QHarr! - person Sam Chang; 26.04.2020