有人知道如何使用JavaScript获取给定网页(没有内容)的纯HTML结构吗?
我试图在PhantomJS中尝试这样做,它提供了两个属性(page.content和page.plainText) - 第一个保存网页内容(带有HTML元素标签),第二个保存内容任何HTML标签。遗憾的是,这种属性并不具备纯HTML结构。我试图通过使用git diff(page.content和page.plainText之间的差异)来获取它,但它没有像我期望的那样工作。
答案 0 :(得分:1)
如果您想获取当前页面的HTML,则应使用document.getElementsByTagName('html')[0].innerHTML;
。
如果你想获得纯HTML,你可以使用递归函数来解析整个html结构并创建虚拟DOM树,然后输出它的innerHTML
。
var result = document.createElement('html');
var startNode = document.getElementsByTagName('html')[0];
function parser(node, target) {
var nodes = node.childNodes;
for(var i in nodes) {
var currentNode = nodes[i];
var nodeName = currentNode.nodeName;
if(!nodeName || nodeName[0] == '#') continue;
var newNode = document.createElement(nodeName);
parser(currentNode, newNode);
target.appendChild(newNode);
}
}
parser(startNode, result);
console.log(result.innerHTML);