zu bewerten Ich versuche NightmareJS v2 und Vo mit Node.JS zu verwenden, um ein paar Suchbegriffe durchzusuchen und Daten von ihnen zu sammeln.NightmareJS nicht in der Lage, mit vo
const nightmare = require('nightmare'),
vo = require('vo'),
nbot = nightmare({ title: 'Bot',
show: true });
const searchTerms = ['spacex', 'tesla', 'elon musk', 'hyperloop']; // EXAMPLE SEARCH TERMS
vo(run)(function(err) {
if (err) throw err
});
function * run() {
yield nbot.goto('http://google.com');
yield * forEach(searchTerms, gen);
yield nbot.end()
.then(function(result) {
console.log(result) // STUFF SHOULD BE LOGGED HERE
});
}
function * gen(item) {
yield nbot.wait('input[title="Search"]')
.click('input[title="Search"]')
.type('input[title="Search"]', item)
.click('input[name="btnK"]')
.wait(100)
.screenshot(item + '.png')
.insert('input[title="Search"]', '')
.evaluate(function() {
return 'foobar' // STUFF RETURNED HERE
})
}
function * forEach (arr, fn) { // NEEDED BECAUSE FOREACH DOESN'T WORK IN GENERATORS
let i;
for (i = 0; i < arr.length; i++) {
yield * fn(arr[i]);
}
}
Nach NightmareJS der docs, wenn Sie etwas in evaluate
kehrt dann wird es ausspucken, wenn Sie then
verwenden: Mein Code kann unten gesehen werden. Wenn ich das versuche, werde ich undefiniert. Ich nehme an, es ist etwas mit den Generatoren, aber ich bin neu für sie, also kann ich es nicht sagen. Hilfe wird geschätzt.
Thank you! Aber ich habe das Problem gestern gelöst, nachdem ich eine Stunde damit herumgespielt habe. Ich werde Ihre Antwort als akzeptiert markieren, um anderen mit einem solchen Problem in der Zukunft zu helfen. –
Ehrfürchtig. Freut mich, dass es funktioniert hat. :) – Ross