1

我目前正在学习如何使用NightmareJS。当我运行下面的代码时,我发现性能很慢。获得输出最多需要 30 秒。我做错什么了吗?

此外,我曾尝试使用wait()选择器,但这并没有太大帮助。

我不确定这是否与我的 Internet 连接有关,但是,使用 Google Chrome 打开相同的站点并执行相同的任务比使用Nightmare更快。

源代码

var Nightmare = require('nightmare');

var after;
var before = Date.now();

new Nightmare({
    loadImages: false
  }).goto('https://www.wikipedia.org/')
  .type('#searchInput', process.argv[2])
  .click('input[name="go"]')
  .wait()
  .url(function(url) {
    after = Date.now();
    console.log('>>> [' + (after - before) / 1000.0 + 's] ' + url);
  })
  .run(function(err, nightmare) {
    if (err) console.log(err);
  });

输出

node n02_extract_wiki_link.js "node.js"
>>> [31.227s] https://en.wikipedia.org/wiki/Node.js

下面列出了我当前的环境。

Mac OS X 10.10.4
node v0.12.5
PhantomJS 2.0.0
nightmare@1.8.2
4

1 回答 1

1

这对我有用:
https ://github.com/segmentio/nightmare/issues/126#issuecomment-75944613

它是 phantomjs 模块和它的依赖,shoe 之间的套接字连接。

您可以自己手动编辑鞋子。进入 node_modules/phantom/shoe/index.js 并将第 8 行更改为读取

var server = sockjs.createServer({
        heartbeat_delay : 200
});
于 2015-08-27T09:23:56.513 回答