Verwenden Sie mehrere page.open in einem Skript
Mein Ziel ist es, viele Seiten (mit einer kurzen Verzögerung) zu öffnen und meine Daten in einer Datei zu speichern.
Aber mein Code funktioniert nicht.
var gamesList = [url1,url2,url3];
//gamesList is getting from a file
var urls = [];
var useragent = [];
useragent.push('Opera/9.80 (Windows NT 6.0) Presto/2.12.388 Version/12.14');
useragent.push('Opera/9.80 (X11; Linux x86_64; U; fr) Presto/2.9.168 Version/11.50');
var page = require('webpage').create();
page.settings.userAgent = useragent[Math.floor(Math.random() * useragent.length)];
console.log('Loading a web page');
function handle_page(url){
page.open(url,function(){
//...
var html= page.evaluate(function(){
// ...do stuff...
page.injectJs('jquery.min.js');
return $('body').html();
});
//save to file
var file = fs.open('new_test.txt', "w");
file.write(html + '\n');
file.close();
console.log(html);
setTimeout(next_page,1000);
});
}
function next_page(urls){
var url=urls.shift();
if(!urls){
phantom.exit(0);
}
handle_page(url);
}
next_page(urls);
phantom.exit();
Ist es wichtig, wo ich schreibephantom.exit();
? Wenn ich es in das @ schreipage.open()
Rückruf am Ende dann öffnet sich die 1. Seite gut.