Sto tentando di analizzare siti Web di paging dinamici con Nightmare/Electron. Non vedo un modo per eseguire un do ... fino a quando funzioni da incubo O un modo per concatenare le chiamate con la logica.Cercapersone dinamico con Nightmare/Electron (page scrap)
Ecco un semplice esempio di codice che si limita a Googles una frase e restituisce gli hrefs di risultati dalla pagina 1. Mi piacerebbe che questo codice continuasse per ogni pagina nei risultati.
var Nightmare = require('nightmare');
var vo = require('vo');
vo(function*() {
var nightmare = Nightmare({ show: true });
var links = yield nightmare
.goto('http://www.google.com')
.wait('input[title="Search"]')
.click('input[title="Search"]')
.type('input[title="Search"]', 'Anequim Project')
.click('input[name="btnK"]')
.wait(600)
.evaluate(function(){
var linkArray = [];
var links = document.querySelectorAll('h3.r a');
for (var i = 0; i < links.length; ++i) {
linkArray.push(links[i].getAttribute('href'));
}
return linkArray;
});
yield nightmare.end();
return links;
})(function (err, result) {
if (err) return console.log(err);
console.log(result);
});
che cosa è con i collegamenti [0], perché solo il primo collegamento? – TheAnimatrix
@ TheAnimatrix per brevità l'esempio restituisce il primo collegamento di ogni pagina restituito da google. –
ok ho pensato che fosse un errore di sorta, ma esiste un problema con questa soluzione, l'ultima pagina non viene grattata, se qualcuno si imbatte in questo problema allora dovrebbe semplicemente copiare la funzione links.push() all'esterno while loop, quindi può essere eseguito ancora una volta per compensare l'ultima pagina – TheAnimatrix