PhantomJS JavaScript will nicht so richtig...

traced

Registered User
Hi Jungs,
ich hab hier ein .js, welches von PhantomJS auf einem Server ausgeführt wird.
Es macht nichts anderes (sollte es zumindest), als die sitemap.xml abzurufen, und dann jede Seite zu parsen, und als .html in einer Ordnerstruktur abzulegen.

Abrufen der xml, parsen und Ordner erstellen funktioniert. Leider kann ich die einzelnen Seiten dann nicht parsen, die Stelle im Code wird nicht mal ausgeführt:

Code:
var page = require('webpage').create(),
urls,
sites,
output;

var fs = require('fs');

page.open(encodeURI('http://www.cooleseite.de/sitemap.xml'), function(status) {
if (status !== "success") {
    console.log('Unable to access network');
    phantom.exit(1);

} else {

    urls = page.content.match(/<loc>(.*)<\/loc>/ig);
    output = '';
    if (urls == null) {
        console.log('No urls found');
        phantom.exit(1);
    }
    else {
        urls.forEach(function(url) {
            var url = url.replace(/<.*?>/g, '');

            var spliturl = url.split("//")[1];
            fs.makeTree('output/' + spliturl);

            console.log(spliturl);   // runs!

[B]            // NOT RUNNING PART
            page.open(url , function () {
                page.evaluate(function(){
                });

                console.log('processing ' + url + ' ...');
                //page.render('output/' + spliturl + '/screenshot.png');
                //fs.write('output/' + spliturl + '/index.html', page.content, 'w');

            });
            // NOT RUNNING PART[/B]

        });
    }
    phantom.exit();
}
});

Im "NOT RUNNING PART" wird nicht mal das console.log() ausgeführt, deshalb sind die zwei Aufrufe darunter kommentiert. Ein JS Validator sagt mir zumindest, dass die Syntax richtig ist.

Habt Ihr ne Idee?
 
Versuch mal ein kurzes resourceTimeout zu setzen, eventuell hängt die Serververbindung.
Ist die Variable "url" denn korrekt an der Stelle? Zumindest aktuell hast du ja keine Debug-Ausgabe um das zu überprüfen.
 
Die Variable url passt hier, und kommt von ein paar Zeilen weiter oben. Hab sie auch zum testen global deklariert, auch kein Unterschied.

Das mit dem resTimeout muss ich probieren, danke für den Hinweis!

Wie könnte denn eine Debug Ausgabe an der Stelle aussehen? Ich erhalte leider von PhantomJS keinerlei Ausgabe. Ich wüsste aber nicht, wie ich das js auf dem Server sonst ausführen sollte. Extra Node installieren? Kennst Du eine andere Möglichkeit?
 
Back
Top