2

我正在尝试使用 PhantomJS 加载页面(使用 Javascript 在网页上加载项目)并将页面上的所有 HTML(至少在<body />标签内)返回给执行的 PHP 函数phantomjs httpget.js

问题:我可以让 phantomjs 返回document.title,但要求它console.log(document.body)简单会给我一个[object Object]. 如何提取页面的 HTML?

与浏览器相比,使用 phantomjs 加载网页也需要更长的时间

httpget.js

console.log('hello!');
var page = require('webpage').create();
page.open("http://www.asos.com/Men/T-Shirts-Vests/Cat/pgecategory.aspx?cid=7616#parentID=-1&pge=0&pgeSize=900&sort=1",
    function(status){
        console.log('Page title is ' + page.evaluate(function () {
            return document.body;
        }));
        phantom.exit();
    });

输出 (从外壳运行)

hello!
Page title is [object Object]
4

3 回答 3

2

document.body.innerHTML包含正文的 HTML。

于 2012-08-20T00:58:56.793 回答
2

不确定这与 Node.js 有什么关系,因为您似乎直接使用 PhantomJS,而不是 node(或通过 node-phantom 幻像)...

但要回答你的问题,你需要这样做:

var html = page.evaluate(function () {
    var root = document.getElementsByTagName("html")[0];
    var html = root ? root.outerHTML : document.body.innerHTML;
    return html
});

这适用于没有外部 <html> 标记的页面。

于 2012-08-20T20:15:33.970 回答
0

阅读文档,page.content获取整个 HTML。

于 2012-08-21T02:37:53.990 回答