Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/42.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jsdom、自动化、抓取、动态框架_Javascript_Node.js_Dom_Frameset_Jsdom - Fatal编程技术网

Javascript jsdom、自动化、抓取、动态框架

Javascript jsdom、自动化、抓取、动态框架,javascript,node.js,dom,frameset,jsdom,Javascript,Node.js,Dom,Frameset,Jsdom,我正在尝试在以下地址刮取、自动化我的活动。 基本上填写表格、提交等 我已经成功地使用greasemonkey实现了自动化,并且正在考虑使用node重建 问:jsdom浏览器emu环境是否允许我访问和操作在上述站点渲染的动态帧 如果有的话。你能给我举个例子吗 注意:我知道Phantomjs和Selenium,但更感兴趣的是将jsdom用于解决方案 到目前为止,我的代码是: var express = require('express'); var request = require('reques

我正在尝试在以下地址刮取、自动化我的活动。 基本上填写表格、提交等

我已经成功地使用greasemonkey实现了自动化,并且正在考虑使用node重建

问:jsdom浏览器emu环境是否允许我访问和操作在上述站点渲染的动态帧

如果有的话。你能给我举个例子吗

注意:我知道Phantomjs和Selenium,但更感兴趣的是将jsdom用于解决方案

到目前为止,我的代码是:

var express = require('express');
var request = require('request');
var cheerio = require('cheerio');
var jsdom   = require('jsdom');
var app     = express();
var port    = '8081';

require('jsdom').defaultDocumentFeatures = {
      FetchExternalResources   : true, 
      ProcessExternalResources : true,
      MutationEvents           : '2.0',
      QuerySelector            : true
}


app.get('/', function(req, res){
url = 'https://www5.fdic.gov/idasp/main.asp';   
jsdom.env(
            url,
            ["https://dl.dropboxusercontent.com/u/1273929/JS/functions/jquery-1.11.1.js"],
            function (err, window) {
                //var $ = window.$;
                var nodes = window.jQuery('frame[name=content]').context._childNodes
                console.log(nodes);
                res.send(window.location._document._URL + '\n');
            }
        );  


})

app.listen(port)
console.log('Magic happens on port ' + port);
exports = module.exports = app;

您可以看到一些关于如何将jsdom与jsdom中的框架一起使用的示例


但是,需要注意的是,jsdom本身不支持导航,因此也不能提交表单。在内部使用jsdom,并通过一些功能对其进行扩展—我相信表单提交就是其中之一。

我认为tampermonkey即使不能更好地工作,也会简单得多。这非常有用。非常感谢。将探索您建议的Zombie.js选项。