首页 > 解决方案 > 使用 htmltab 从 html 获取表格

问题描述

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

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

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

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

标签: rweb-scrapingxpath

解决方案


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

下面是一种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)

推荐阅读