在 R 中使用 JSON 提取数据时出现问题(出现词法错误)

Problems extracting data using JSON in R (getting a lexical error)

与这里问的问题相关:

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()
)

我正在尝试从“州”选项卡中获取夏威夷数据集。该代码之前可以正常工作,但现在这部分代码会引发错误:

all_data <- jsonlite::parse_json(stringr::str_match(s, "__INITIAL_STATE__ = (.*?\});w\.")[, 2])

我遇到错误:

Error: lexical error: invalid char in json text.                                        NA                      (right here) ------^

有什么建议的解决方案吗?该网站似乎在这一年中保持不变,但导致代码中断的是什么类型的更改?

如下所示更改正则表达式模式,以确保它在响应文本中正确捕获所需的字符串,即用于 all_data

的 JavaScript 对象
all_data <- jsonlite::parse_json(stringr::str_match(s, "__INITIAL_STATE__ = ([\s\S]+\});")[, 2])

注意:在 R 中,单个转义被加倍,例如\s 而不是上面显示的 \s