用 rvest 抓取网页

web scrape with rvest

我正在尝试使用 r 包 rvest 中的 read_html 获取 table 数据。

我试过下面的代码:

library(rvest)
  raw <- read_html("https://demanda.ree.es/movil/peninsula/demanda/tablas/2016-01-02/2")

我不相信上面从 table 中提取数据,因为我看到 'raw' 是 2 的列表:

'node:<externalptr>' and  'doc:<externalptr>'

我也试过获取 xpath:

html_nodes(raw,xpath = '//*[(@id = "tabla_generacion")]//*[contains(concat( " ", @class, " " ), concat( " ", "ng-scope", " " ))]')

对接下来要尝试什么有什么建议吗?

谢谢。

本网站正在使用 angular 进行调用以获取数据。您可以只使用该调用来获取原始 JSON。响应不是纯粹的 JSON,所以你不能只是 运行 fromJSON(url),你必须在解析之前下载数据并去掉非 JSON 的东西它。

library(jsonlite)
library(httr)
url <- "https://demanda.ree.es/WSvisionaMovilesPeninsulaRest/resources/demandaGeneracionPeninsula?callback=angular.callbacks._2&curva=DEMANDA&fecha=2016-01-02"
a <- GET(url)
a <- content(a, as="text")
# get rid of the non-JSON stuff...
a <- gsub("^angular.callbacks._2\(", "", a)
a <- gsub("\);$", "", a)
df <- fromJSON(a, simplifyDataFrame = TRUE)

我通过在 Chrome 中按 F12 并查看 "Sources" 选项卡找到了这个。填充 table 的数据必须来自某个地方......所以这只是弄清楚在哪里的问题。我无法使用 rvest 来抓取 table。我不确定获取数据的调用是否像在 chrome 中那样在 R 中执行...所以可能没有数据可供 rvest 抓取。