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.

Antworten auf die Frage(4)

Ihre Antwort auf die Frage