nightmare.js - $未定义

时间:2017-05-03 05:19:22

标签: javascript jquery nightmare

我想在jquery的网页抓取中使用nightmare.js。基于this tutorial,我可以inject jquery并将文件复制到同一个根文件夹。但不知怎的,我仍然得到错误:

  

ReferenceError:$未定义

以下是我的代码:

var Nightmare = require('nightmare');

new Nightmare()
  .goto('http://google.com')
  .inject('js', 'jquery.min.js')
  .wait()
  .run(function(err, nightmare) {
    if (err) {
      console.log(err);
    };

    var items = [];

    $('.someclass').each(function(){//<-- error - $ not defined
        item = {};
        item.value = $(this).val();
        items.push(item);
    });
    console.log(items);
    });

1 个答案:

答案 0 :(得分:3)

为了能够与页面及其变量进行交互,您需要使用.evaluate(fn)

  

使用fn在页面 上调用arg1, arg2,...

.evaluate()fn的上下文更改为页面的上下文,以便它可以像客户端代码一样执行,并可以访问{{1} },windowdocument以及任何其他全局变量。

此外,由于您已经提到使用版本2.10,因此1.x版本中的$功能已被Promises取代,因此您将要使用{{1 }和.run()分别处理成功和错误。

对于您的代码段:

.then()

该项目的自述文件包括a few examples of this method chain