verim ben değil, hangi web siteleriniKullanım ES6 sözdizimi olmadan Nightmare.js ve
var Nightmare = require('nightmare');
var vo = require('vo');
vo(run)(function(err, result) {
if (err) throw err;
});
function *run() {
var x = Date.now();
var nightmare = Nightmare();
var html = yield nightmare
.goto('http://google.com')
.evaluate(function() {
return document.getElementsByTagName('html')[0].innerHTML;
});
console.log("done in " + (Date.now()-x) + "ms");
console.log("result", html);
yield nightmare.end();
}
Ben düğüm eski bir sürümünü kullanarak bir ortamda bu çalıştırmak istiyorum kazımak için nightmare.js kullanarak basit bir düğüm metni oluşturdu ES6 özelliklerini destekleyin. Github sayfasında "getiri" anahtar kelimesi olmadan nasıl yapılacağına dair örnek yoktur. Webscraping with nightmare
böyle yazdım:
Burada ES6 sözdizimi olmadan kullanımına yönelik bir örnek buldunuz O çökmezvar night = new Nightmare()
.goto('http://www.google.com')
.evaluate(function() {
return document.getElementsByTagName('html')[0].innerHTML;
},function (html) {
console.log("result", html);
}
)
.run(function (err, nightmare) {
if (err) return console.log(err);
console.log('Done!');
});
ama sonuç günlüğü fonksiyonu asla denir.
Verim sözdizimi ile döndürülen değeri "değerlendirmeden" almak oldukça basittir, ancak onsuz, bunu yapmanın bir yolunu bulamadım.
UPDATE Bunu kabul edilen yanıt ve yorumları sayesinde yazdı. Bu 'Q' kullanır ve 0.12 önceki düğüm sürümlerinde çalışır:
var Nightmare = require('nightmare');
var Promise = require('q').Promise;
var x = Date.now();
var nightmare = Nightmare();
Promise.resolve(nightmare
.goto('http://google.com')
.evaluate(function() {
return document.getElementsByTagName('html')[0].innerHTML;
})).then(function(html) {
console.log("done in " + (Date.now()-x) + "ms");
console.log("result", html);
return nightmare.end();
}).then(function(result) {
}, function(err) {
console.error(err); // notice that `throw`ing in here doesn't work
});
[babel-düğümünü] Kullanma (https://babeljs.io/docs/usage:
Hesabınızı bir
then
çağrısıyla heryield
yerine, bir söz zincirinde içine doğrusal jeneratör kodu dönüştürebilir/cli/# babel-node) kullanım durumunuza bağlı olarak daha basit bir çözüm olabilir. Temelde ES6 kodunu ES5'e aktarmadan önce etrafındaki sarıcıdır. –