R - 使用 SelectorGadget 获取数据集

R - Using SelectorGadget to grab a dataset

我正在尝试从该站点获取 Hawaii-specific 数据:https://www.opentable.com/state-of-industry。我想从网站上的每个 table 获取夏威夷的数据。这是在选择“状态”选项卡后完成的。

在 R 中,我正在尝试将 rvest 库与 SelectorGadget 一起使用。

到目前为止我已经试过了

library(rvest)
html <- read_html("https://www.opentable.com/state-of-industry") 
    
html %>% 
html_element("tbody") %>% 
      html_table() 

但是,这还没有给我想要的东西。我正在获取全局数据集而不是小标题。那么关于如何从州选项卡获取夏威夷数据集有什么建议吗?

另外,有没有办法通过点击下载数据集选项卡来下载数据集?然后我也可以从 csv 文件开始工作。

所有页面数据都存储在 script 标记中,它是在浏览器中动态提取的。您可以用正则表达式输出包含所有数据的 JavaScript 对象,并编写一个自定义函数来仅提取夏威夷的信息,如下所示。函数 get_state_index 被编写为接受一个 state 参数,以防您希望查看其他州的信息。

library(rvest)
library(jsonlite)
library(magrittr)
library(stringr)
library(purrr)
library(dplyr)

get_state_index <- function(states, state) {
  return(match(T, map(states, ~ {
    .x$name == state
  })))
}

s <- read_html("https://www.opentable.com/state-of-industry") %>% html_text()
all_data <- jsonlite::parse_json(stringr::str_match(s, "__INITIAL_STATE__ = (.*?\});w\.")[, 2])
fullbook <- all_data$covidDataCenter$fullbook

hawaii_dataset <- tibble(
  date = fullbook$headers %>% unlist() %>%  as.Date(),
  yoy = fullbook$states[get_state_index(fullbook$states, "Hawaii")][[1]]$yoy %>% unlist()
)

正则表达式: