2013-11-24 12 views
8

unterhalb den HTML-Quellcode eine Webseite zu erhalten, ist ein Beispiel für PhantomJS, die ein Element von DOM-ID von einer externen Webseite bekommt:Wie mit PhantomJS

var page = require('webpage').create(); 
console.log('The default user agent is ' + page.settings.userAgent); 
page.settings.userAgent = 'SpecialAgent'; 
page.open('http://www.httpuseragent.org', function(status) { 
    if (status !== 'success') { 
    console.log('Unable to access network'); 
    } else { 
    var ua = page.evaluate(function() { 
     return document.getElementById('myagent').textContent; 
    }); 
    console.log(ua); 
    } 
    phantom.exit(); 
}); 

Ich möchte den gesamten HTML-Quellcode einer Webseite erhalten ... Wie mache ich das?

+0

verwenden Wenn Sie die HTML-Quelle wollen, dann so etwas wie [die http-Modul] verwenden (http://nodejs.org/docs/v0.5.2/ api/http.html # http.request), anstatt die Seite über einen Browser auszuführen (der JS ausführen und das DOM damit verwinden wird). – Quentin

+0

kann mir ein Beispiel zeigen? – MOB

Antwort

10

Alles, was Sie tun müssen, ist page.content

var page = require('webpage').create(); 
page.onError = function(msg, trace) { 
    //prevent js errors from showing in page.content 
    return; 
}; 
page.open('http://www.httpuseragent.org', function() { 
    console.log(page.content); //page source 
    phantom.exit(); 
}); 
+4

Dies gibt den HTML-Code aus dem dom (der durch den Browser mit Javascript verarbeitet wurde und ein gewisses Maß an Syntaxkorrektur durchlaufen hat) im Gegensatz zu dem rohen unverarbeiteten HTML, das von den Servern –

+2

bereitgestellt wird. Das ist der Sinn eines Tools wie PhantomJS. Wenn Sie Rohdaten verwenden möchten, verwenden Sie ein niedrigeres Werkzeug wie curl oder wget. –