代码之家  ›  专栏  ›  技术社区  ›  Nyxynyx

使用幻影的网页HTML

  •  2
  • Nyxynyx  · 技术社区  · 12 年前

    我正在尝试使用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();
        });
    

    输出 (从shell运行)

    hello!
    Page title is [object Object]
    
    3 回复  |  直到 12 年前
        1
  •  2
  •   Lusitanian    12 年前

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

        2
  •  2
  •   Matt Sergeant    12 年前

    不确定这与Node.js有什么关系,因为你似乎直接使用PhantomJS,而不是节点(或通过节点phantom使用phantom)。。。

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

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

    这适用于没有外部<html>标签

        3
  •  0
  •   Ariya Hidayat    12 年前

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