PhantomJS和修改DOM

时间:2011-03-30 18:18:10

标签: javascript html phantomjs

我正在开发一个工具,需要从第三方服务器下载网页,以浏览器的身份执行,然后解析HTML。我所挣扎的是该工具需要在执行所有javascript并修改DOM之后解析HTML。我正在尝试将PhantomJS用于此目的,它适用于代码的小片段(只是一个带有外部javascript的小型html文档,可以为DOM添加一些节点)但是当我对真实站点执行相同操作时http://www.dba.dk/在js代码完成所有修改后,我没有得到最终的HTML。

我真的需要帮助,因为我已经坚持了一个多星期。

我的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不包含动态生成的内容

1 个答案:

答案 0 :(得分:3)

问题出在Flash插件中。这些页面正在检测它的缺席。一旦正确加载,问题就消失了