node.js - Nightmare 循环

标签 node.js nightmare

您好,我正在编写一个应用程序,在其中我需要能够遍历一组URL。我知道有一个执行此操作的示例,但是我的问题略有不同,我将通过一些代码进行解释。

nightmare
  .goto('some url')
  .evaluate(() => {
    //evaluate code
  })
  .then(dataArray => {
    var innerRun = function* () {
      var returnData = [];
      for (var i = 0; i < dataArray.length; i++) {
        var item = dataArray[i];
        yield nightmare
          .goto(item.url)
          .evaluate(function () {
            return false;
          })
          .screenshot(item.imgPath)
        returnData.push(item);
      }
      return returnData;
    }
    vo(innerRun)(function (err, ads) {
      if (err) {
        console.log("Error running", err)
        return;
      }
    });
  });

我希望能够通过使用网址数组来循环该代码。我相信我在执行此操作时遇到了问题,因为我已经在then中进行了此操作。一旦击中yield nightmare中的then,它将停止运行
var mainLoop = function* () {
  for (var j = 0; j < urlArray.length; j++) {
    var url = urlArray[j];
    yield nightmare.goto(url)//same code as in example above
  }
}

vo(mainLoop)(function (err, d) {
  if (err) {
    console.log("Error running", err)
    return;
  }
});

上面的代码是我试图做的。如果有人有任何想法,那将是巨大的帮助,谢谢!

最佳答案

也许试试这个:

var urls = ['http://example.com', 'http://example2.com', 'http://example3.com'];

var results = [];
urls.forEach(function(url) {
  nightmare.goto(url)
    .wait('body')
    .title()
    .then(function(result) {
      results.push(result);
    });
});
console.dir(results)

资料来源:https://github.com/rosshinkley/nightmare-examples/blob/master/docs/common-pitfalls/async-operations-loops.md

关于node.js - Nightmare 循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47624655/

相关文章:

node.js - 如何在不挂机的情况下执行多重 Nightmare 功能

javascript - 如何为返回表中的每一行添加换行符?

node.js - 如何在Node.js中处理同步浏览器仿真

mysql - nodejs和DB之间如何通信

Node.js : need help to create command line interface

node.js - 发出 http 或 https 请求时如何指定 IP 和主机名?

node.js - 在 Nightmare.js 中发送 keydown、keypress 类型

javascript - 基于node.js和express中的路径运行不同数据库查询的更好方法

mysql - Sequelize 关联为一个模型创建 userId 和 user_id,但不为另一个模型创建 userId 和 user_id

javascript - 抓取: Get Link that is only visible on the website not in the html