【问题标题】:Webpage's HTML using Phantom使用 Phantom 的网页 HTML
【发布时间】:2012-08-15 09:29:57
【问题描述】:

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

问题:我可以让 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]

【问题讨论】:

    标签: php javascript node.js screen-scraping phantomjs


    【解决方案1】:

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

    【讨论】:

    • 不幸的是,我不熟悉 node.js 或这个库。请注意,document.body.innerHTML 不包括 或 标签。
    【解决方案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
    });
    

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

    【讨论】:

      【解决方案3】:

      阅读文档,page.content 为您提供整个 HTML。

      【讨论】:

        猜你喜欢
        • 2012-10-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-06-28
        • 2018-09-29
        • 1970-01-01
        • 2014-01-20
        相关资源
        最近更新 更多