2

PhantomJS を使用してページをロードし (Javascript を使用して Web ページに項目をロードする)、ページ上のすべての HTML (少なくとも<body />タグ内) を実行する PHP 関数に返そうとしていますphantomjs httpget.js

問題: phantomjs を取得して を返すことはできますが、 simple にdocument.title依頼すると. が返されます。ページの HTML を抽出するにはどうすればよいですか?console.log(document.body)[object Object]

また、phantomjs を使用して Web ページを読み込むには、ブラウザに比べてはるかに時間がかかります

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

ノード(またはノードファントム経由のファントム)ではなく、PhantomJSを直接使用しているように見えるため、これがNode.jsとどう関係しているのかわかりません...

しかし、あなたの質問に答えるには、これを行う必要があります:

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 に答える
2

document.body.innerHTML本文の HTML が含まれます。

于 2012-08-20T00:58:56.793 に答える
0

ドキュメントを読んで、page.contentHTML 全体を入手してください。

于 2012-08-21T02:37:53.990 に答える