繁体   English   中英

从Javascript弹出窗口中使用R抓取数据

[英]Scrape data using R from Javascript pop-up window

我要从此站点刮取名为“约束”的弹出窗口的内容: https : //dataviewer.pjm.com/dataviewer/pages/public/lmp.jsf (单击“约束”链接后将显示弹出窗口在左侧)。

我需要获得下面显示的约束,意外事件和影子价格数据。 使用SelectorGadget,我将该信息标识为“ #frmConstraints \\:tblConstraints_data .col-left”

选择器小工具结果

我可以在这里看到我想要的信息(类“ col-left”的信息): 开发者代码

我运行了此R代码,但无济于事。 const_info不返回任何内容。

library(rvest)
library(stringr)
library(plyr)
library(dplyr)
library(ggvis)
library(knitr)
options(digits = 4)

session <-
 rvest::html_session('https://dataviewer.pjm.com/dataviewer/pages/public/lmp.jsf')

constraints_page <- 
rvest::follow_link(x=session,css='#formLeftPanel\\:constraintLink')

constraints_html <- xml2::read_html(constraints_page)

const_info <- constraints_html %>% 
rvest::html_nodes('#frmConstraints\\:tblConstraints_data .col-left') %>% 
rvest::html_text()

我还运行了PhantomJS将其转换为html页面,但我不希望看到的信息。

phantom_html页面

为了达到上述目的,我使用PhantomJS运行了以下代码。

// scrape_dataviewer.js

var webPage = require('webpage');
var page = webPage.create();

var fs = require('fs');
var path = 'dataviewer.html'

page.open('https://dataviewer.pjm.com/dataviewer/pages/public/lmp.jsf', function (status) {
  var content = page.content;
  fs.write(path,content,'w')
  phantom.exit();
});

我熟悉R和rvest,甚至PhantomJS。 我看到我可能需要R软件包V8。 但是最终,我无法获取此信息。

我无法找到答案,但我在没有其他研究的情况下已尽其所能。 这样可以将所需的数据带到表中,但是我只能返回日期。 我相信我需要在html会话中选择每个日期,然后提取与每个日期相关的数据。 下面是我的代码:

session <- rvest::html_session('https://dataviewer.pjm.com/dataviewer/pages/public/lmp.jsf')
constraints_page <- rvest::follow_link(x=session,css='#formLeftPanel\\:constraintLink')
constraints_html <- xml2::read_html(constraints_page)
constraints_html %>% 
  rvest::html_nodes('#frmConstraints') %>% 
  rvest::html_text()

我打算将其添加到评论中,但是我的信誉点不够,抱歉,这不是一个完整的答案!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM