2013-11-24 125 views
8

下面一个网站的HTML源代码是获取通过DOM ID某些元素从外部网页PhantomJS的例子:如何获得与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(); 
}); 

我希望得到一个网页的整个HTML源代码... 我该怎么做呢?

+0

如果你想HTML源代码,然后使用类似[HTTP模块(http://nodejs.org/docs/v0.5.2/ api/http.html#http.request),而不是通过浏览器运行该页面(这将执行JS并用它对DOM进行修改)。 – Quentin

+0

能告诉我一个例子吗? – MOB

回答

10

所有您需要做的是使用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

这相当于服务器提供的未经处理的原始html相对于dom(已由浏览器使用javascript进行处理并已经过一定程度的语法修正)的HTML。 –

+2

这就是使用像PhantomJS这样的工具的要点。如果你想让原始数据使用像curl或wget这样的低级工具。 –