0

我正在尝试使用 nightmare js 抓取整个页面并将结果返回给调用函数。为此,通过扩展噩梦示例,我将参数传递给生成器函数。由于我不明白的原因,run() 函数永远不会被调用。

谢谢你的帮助。

var Nightmare = require('nightmare');
var vo = require('vo');
const fs = require('fs');

url = "http://google.com";

vo( run(url) )(function(err, result) {
    if (err) throw err;
    console.log("end result length: ", result.length);

    fs.writeFile("test.html", result, function(err) {
        if(err) { return console.log(err); } })

 });

function *run(url) {
    console.trace()
    var x = Date.now();
    var nightmare = Nightmare();
    var html = yield nightmare
      .goto(url) // 'http://google.com')
      .evaluate(function() {
        return document.getElementsByTagName('html')[0].innerHTML;
      });

   console.log("done in " + (Date.now()-x) + "ms");
    console.log("result:", html.length);

    yield nightmare.end();
    return html;
}
4

1 回答 1

1

这只是上面示例中的错误术语。这是 vo 的工作原理:

vo( run )(url1, function(err, result) {
    if (err) throw err;
    console.log("end result length: ", result.length);

    fs.writeFile("test.html", result, function(err) {
        if(err) { return console.log(err); } })

 });
于 2016-01-18T11:01:45.490 回答