使用J从Javascript弹出窗口中截取数据

问题描述 投票:1回答:1

我想从这个站点中删除名为“Constraints”的弹出窗口的内容:https://dataviewer.pjm.com/dataviewer/pages/public/lmp.jsf(单击左侧的Constraints链接后显示弹出窗口)。

我需要获得下面的Constraint,Contingency和Shadow Price数据。使用SelectorGadget,我将该信息识别为“#frmConstraints \:tblConstraints_data .col-left”

Selector Gadget results

我可以在这里看到我想要的信息(类“col-left”的信息):devleoper code

我运行这个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 page

为了实现上述目的,我使用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。但在一天结束时,我无法抓住这些信息。

javascript r web-scraping
1个回答
0
投票

我无法得到答案,但我已经尽可能地接受了它,没有进行额外的研究。这会使您获得所需数据,但我只能返回日期。我相信我需要在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()

我打算将此添加到评论中,但我没有足够的声望点,这不是一个完整的答案抱歉!

© www.soinside.com 2019 - 2024. All rights reserved.