如何使用 rvest 抓取使用 datawrapper 创建的 table?
How to scrape a table created using datawrapper using rvest?
我正在尝试使用 rvest 从以下网站抓取 Table 1:
以下是我写的代码:
link <- "https://www.kff.org/coronavirus-covid-19/issue-brief/u-s-international-covid-19-vaccine-donations-tracker/"
page <- read_html(link)
page %>% html_nodes("iframe") %>% html_attr("src") %>% .[11] %>% read_html() %>%
html_nodes("table.medium datawrapper-g2oKP-6idse1 svelte-1vspmnh resortable")
但是,我得到 {xml_nodeset (0)}
作为结果。我正在努力从数据包装器页面中找出 html_nodes() 中 select 的正确标记以提取 Table 1.
如果有人能指出我犯的错误,或者提出解决这个问题的解决方案,我将不胜感激table。
非常感谢。
数据存在于 iframe 中,但需要进行一些操作。至少对我来说,从 iframe 页面构建 csv 下载 url 然后请求 csv
更容易
library(rvest)
library(magrittr)
library(vroom)
library(stringr)
page <- read_html('https://www.kff.org/coronavirus-covid-19/issue-brief/u-s-international-covid-19-vaccine-donations-tracker/')
iframe <- page %>% html_element('iframe[title^="Table 1"]') %>% html_attr('src')
id <- read_html(iframe) %>% html_element('meta') %>% html_attr('content') %>% str_match('/(\d+)/') %>% .[, 2]
csv_url <- paste(iframe,id, 'dataset.csv', sep = '/' )
data <- vroom(csv_url, show_col_types = FALSE)
我正在尝试使用 rvest 从以下网站抓取 Table 1:
以下是我写的代码:
link <- "https://www.kff.org/coronavirus-covid-19/issue-brief/u-s-international-covid-19-vaccine-donations-tracker/"
page <- read_html(link)
page %>% html_nodes("iframe") %>% html_attr("src") %>% .[11] %>% read_html() %>%
html_nodes("table.medium datawrapper-g2oKP-6idse1 svelte-1vspmnh resortable")
但是,我得到 {xml_nodeset (0)}
作为结果。我正在努力从数据包装器页面中找出 html_nodes() 中 select 的正确标记以提取 Table 1.
如果有人能指出我犯的错误,或者提出解决这个问题的解决方案,我将不胜感激table。
非常感谢。
数据存在于 iframe 中,但需要进行一些操作。至少对我来说,从 iframe 页面构建 csv 下载 url 然后请求 csv
更容易library(rvest)
library(magrittr)
library(vroom)
library(stringr)
page <- read_html('https://www.kff.org/coronavirus-covid-19/issue-brief/u-s-international-covid-19-vaccine-donations-tracker/')
iframe <- page %>% html_element('iframe[title^="Table 1"]') %>% html_attr('src')
id <- read_html(iframe) %>% html_element('meta') %>% html_attr('content') %>% str_match('/(\d+)/') %>% .[, 2]
csv_url <- paste(iframe,id, 'dataset.csv', sep = '/' )
data <- vroom(csv_url, show_col_types = FALSE)