用 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 抓取。
我正在尝试使用 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 抓取。