2016-05-01 17 views
0

Mein Ziel ist es, den dynamischen Web-Inhalt einer Website herunterzuladen, so dass Javascript auf dem empfangenen Inhalt ausgeführt werden muss. Der Code, den ich zur Zeit mit PhantomJS 2.1 verwenden, ist die folgende:Probleme beim Herunterladen von dynamischen Web-Inhalten mit PhantomJS

var page = require('webpage').create(); 
var fs = require('fs'); 

page.open('https://sports.bovada.lv/soccer/premier-league', function() { 
    page.includeJs("http://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js", function() { 
     page.evaluate(); // Edit: this line is removed 
     page.close(); 
    }); 
}); 

page.onLoadFinished = function() { 
    console.log("Download finished"); 
    fs.write('test.html', page.content, 'w'); 
    phantom.exit(0); 
}; 

Der Code die empfangenen Seite als „test.html“ spart, aber leider ist es nicht den vollen Seiteninhalt geladen, wie es mit einem tut Webbrowser. Ich würde mich freuen, wenn mir jemand helfen könnte.

Webseite zum Testen verwendet: https://sports.bovada.lv/soccer/premier-league

+0

Diese Seite kann nicht erreicht werden sports.bovada.lv die Verbindung unerwartet geschlossen. ERR_CONNECTION_CLOSED – Vaviloff

+0

Es kann vorkommen, dass die Site über Standortbeschränkungen verfügt. Wie auch immer Sie experimentieren mit einer anderen Website zum Beispiel http://www.foxsports.com/soccer/scores?competition=1 – shen

+0

Warum verwenden Sie sowohl "page.onLoadFinished" und den Rückruf von 'page.open'. Sie brauchen nur einen von ihnen, weil sie gleichwertig sind, wenn Sie nur eine Seite öffnen. Was soll 'page.evaluate();' auch erreichen? Darüber hinaus kann das Laden einer alten Version von jQuery die Seite beschädigen. Versuchen Sie, sich auf die jQuery-Version zu verlassen, die mit der Seite geliefert wird. –

Antwort

1

Das Problem könnte sein, dass your're zu früh verlassen. Versuchen Sie Skript Beendigung Verzögerung:

page.onLoadFinished = function() { 
    console.log("Download finished"); 
    fs.write('test.html', page.content, 'w'); 
    setTimeout(function(){ 
     phantom.exit(0); 
    }, 1000); 
}; 
+0

Danke für Ihren Vorschlag, aber leider hat es mein Problem nicht gelöst. Die Seite wird immer noch nicht ordnungsgemäß heruntergeladen. Es wird immer noch so angezeigt, wie ich es statisch mit CURL heruntergeladen habe. – shen

Verwandte Themen