【问题标题】:xpath with rvest fails, returning an empty list带有 rvest 的 xpath 失败,返回一个空列表
【发布时间】:2020-04-26 05:28:37
【问题描述】:

我在使用“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

【问题讨论】:

    标签: web-scraping rvest


    【解决方案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
    

    【讨论】:

    • 谢谢你,QHarr!我以前也这样做过。有效。我想尝试提取未嵌入 HTML 的 csv 数据表的方法。数据也可以直接下载。我只是好奇json是否不可用。
    • 也许我不明白从原始url返回的html中不存在数据。您需要提出与上述类似的请求。然后,您可以循环返回的结构以构造 table/df 并写入 csv。
    • 嗨,QHarr!我刚刚发现您提供的网址与我用于 json 数据的网址不同。你怎么得到的?谢谢!
    • 检查网络选项卡中单击 csv 下载图标时发出的新 xhr 请求——这可能是最简单的方法。您需要同时打开网络标签。
    • 知道了。谢谢你,QHarr!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-20
    相关资源
    最近更新 更多