我正在尝试从网页复制一张表,因为我试图获取每个数据集的数据版本,所以会有很多表,我试图获取至少一个表但失败了。抓取不是我的事,也许如何得到它是显而易见的,但对我来说不是。
这是我的代码:
url <- "https://data.cms.gov/provider-characteristics/medicare-provider-supplier-enrollment/medicare-fee-for-service-public-provider-enrollment/api-docs"
html <- rvest::read_html(url)
> html |> rvest::html_node(".table")
{xml_missing}
<NA>
还有
> html |>
rvest::html_node(xpath = "/html/body/div/div/div/div/div/div/div[2]/div[2]/div/div/table/tbody")
{xml_missing}
<NA>
还有
html |>
rvest::html_node("tbody")
不幸的是,这种方法行不通。您正在查看的页面中的表格是通过 JavaScript 生成的。
rvest::read_html(url)
调用将检索该页面上的 static 内容,但不会执行任何(动态)JavaScript。
幸运的是,该网站背后有一个 API,因此您可以直接从中获取数据。例如:
library(httr)
params = list(
`path` = "/provider-characteristics/medicare-provider-supplier-enrollment/medicare-fee-for-service-public-provider-enrollment"
)
res <- httr::GET(url = "https://data.cms.gov/data-api/v1/slug", query = params)
cat(content(res, as="text", encoding = "UTF-8"))