6

サードパーティのサーバーから Web ページをダウンロードし、ブラウザと同じように実行してから HTML を解析する必要があるツールを開発しています。私が苦労しているのは、すべての JavaScript が実行され、DOM が変更された後に、ツールが HTML を解析する必要があることです。私はこの目的のために PhantomJS を使用しようとしていますが、コードの小さなスニペット (DOM にいくつかのノードを追加する外部 javascript を含む小さな html ドキュメント) で動作しますが、実際のサイト ( http://www .dba.dk/ ) js コードによってすべての変更が行われた後、最終的な HTML を取得できません。

1週間以上立ち往生しているので、これについて本当に助けが必要です.

私の PhantomJS コードは単純です。

if (phantom.state.length === 0) {
     if (phantom.args.length === 0) {
             console.log('Usage: test.js <some URL>');
             phantom.exit();
     } else {
             var address = phantom.args[0];
             phantom.state = Date.now().toString();
             phantom.viewportSize = { width: 1280, height: 800 };
             phantom.open(address);
     }
} else {
     var elapsed = Date.now() - new Date().setTime(phantom.state);
     if (phantom.loadStatus === 'success') {
             if (!first_time) {
                     var first_time = true;
                     if (!document.addEventListener) {
                             console.log('Not SUPPORTED!');
                     }
                     phantom.render('result.png');
                     var markup = document.documentElement.innerHTML;
                     console.log(markup);
                     phantom.exit();
             }
     } else {
             console.log('FAIL to load the address');
             phantom.exit();
     }
}

コンソールにダンプされた HTML に、動的に生成されたコンテンツが含まれていない

4

1 に答える 1

3

問題は Flash プラグインにありました。ページはその不在を検出していました。正しくロードされると、問題はなくなりました

于 2011-04-01T20:58:11.387 に答える