【问题标题】:Get table from html with htmltab使用 htmltab 从 html 获取表格
【发布时间】:2021-11-02 09:46:07
【问题描述】:

我正在尝试从网站获取表格到 R。我当前正在运行的代码是:

library(htmltab)
url1 <- 'https://covid19-dashboard.ages.at/dashboard_Hosp.html'
TAB<-htmltab(url1, which = "//table[@id = 'tblIcuTimeline']")

这是选择正确的表,因为变量是我想要的,但表是空的。我的 XPath 可能有问题。我得到的错误是:

未提供编码:默认为 UTF-8。 Node[[1]] 中的错误:下标超出范围

【问题讨论】:

    标签: r web-scraping xpath


    【解决方案1】:

    这个网站有一个方便的可用 JSON 文件,你可以像这样提取它:

    library(jsonlite)
    url <- "https://covid19-dashboard.ages.at/data/JsonData.json"
    ll <- jsonlite::fromJSON(txt = url)
    

    您可以从那里子集并提取您想要的内容。我猜你是在ll$CovidFallzahlen之后我的德语不太好,所以无法隔离你所追求的确切值。

    【讨论】:

      【解决方案2】:

      问题是(很可能)在页面直接接近时,表格是空的,必须在页面加载时填充。但是在页面的初始方法(使用您的代码)中,表格仍然是空的。

      下面是RSelenium 方法,它会生成一个列表all.table,其中包含所有已填充的表。选择您需要的。
      要求:已安装 firefox

      library(RSelenium)
      library(rvest)
      library(xml2)
      
      #setup driver, client and server
      driver <- rsDriver( browser = "firefox", port = 4545L, verbose = FALSE ) 
      server <- driver$server
      browser <- driver$client
      
      #goto url in browser
      browser$navigate("https://covid19-dashboard.ages.at/dashboard_Hosp.html")
      
      #get all tables
      doc <- xml2::read_html(browser$getPageSource()[[1]])
      all.table <- rvest::html_table(doc)
      
      #close everything down properly
      browser$close()
      server$stop()
      # needed, else the port 4545 stays occupied by the java process
      system("taskkill /im java.exe /f", intern = FALSE, ignore.stdout = FALSE)
      

      【讨论】:

        猜你喜欢
        • 2012-03-19
        • 1970-01-01
        • 2012-06-02
        • 2019-02-26
        • 1970-01-01
        • 1970-01-01
        • 2016-04-24
        • 2012-10-16
        • 2011-10-23
        相关资源
        最近更新 更多