我是Phantomjs的新手。为了在远程服务器上进行调试,我经常要转储一个DOM对象来查看结构(类似于Perl中的Data :: Dumper)。目前这是为了抓取几个网站。
我认为JSON.stringify可能对此有所帮助,但它仍然显示对象名称,如“[object HTMLDocument]”
编辑:我也看了JavaScript: how to serialize a DOM element as a string to be used later?,但我似乎无法在phantomjs中注入jquery(仍在寻找解决方案,并且不愿意依赖),另一个答案不是似乎工作。我认为Phantom分析DOM是一种常见的情况,我认为幻影用户通常可以找到解决方案。
var page = require('webpage').create();
var system = require('system');
page.onConsoleMessage = function(msg) {
console.log( msg );
}
page.open('http://www.test.com', function(status) {
if(status !== "success") {
console.log( status );
} else {
page.evaluate(function() {
var headline = document.querySelectorAll('div');
console.log( JSON.stringify( headline ) ); // HERE???
});
}
phantom.exit();
});
有没有办法做到这一点,还是我接近这个错误?
答案 0 :(得分:1)
,您可以使用function splitTime(time) {
const first32 = time & 0xFFFFFFFF;
const first16 = first32 & 0xFFFF;
const second16 = first32 >>> 16;
const third16 = Math.floor((time / 0xFFFFFFFF) & 0xFFFF);
return [first16, second16, third16];
}
转换您想要字符串的DOM节点。
<ul class="pagination">
<li class="disabled"><a href="#">«</a></li>
<li class="active"><a href="#">1</a></li>
<li><a href="#">2</a></li>
<li><a href="#">3</a></li>
<li><a href="#">4</a></li>
<li><a href="#">5</a></li>
<li><a href="#">»</a></li>
</ul>
我还没有尝试使用&#34; querySelectorAll&#34;,因为它可能返回数组而不是独立的DOM节点,但它肯定适用于DOM节点。