【问题标题】:jsdom, automation, scraping, dynamic framesjsdom,自动化,抓取,动态帧
【发布时间】:2015-09-15 17:04:03
【问题描述】:

我正在尝试在以下地址抓取、自动化我的活动。 https://www5.fdic.gov/idasp/main.asp 基本上填写表格,提交等。

我已经成功地使用greasemonkey 进行自动化,并且正在考虑使用节点进行重建。

问题: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;

【问题讨论】:

  • 我认为 Tampermonkey 会更简单,甚至更好。

标签: javascript node.js dom frameset jsdom


【解决方案1】:

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

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

【讨论】:

  • 这很有帮助。谢谢你。将探索您建议的 Zombie.js 选项。
猜你喜欢
  • 2022-01-23
  • 2014-09-04
  • 1970-01-01
  • 1970-01-01
  • 2014-03-01
  • 2019-01-18
  • 2012-02-11
  • 1970-01-01
  • 2010-09-17
相关资源
最近更新 更多