如何过滤页面源以获得纯HTML - 没有内容(仅限标签)

时间:2016-04-14 21:02:50

标签: javascript html phantomjs diff webpage

有人知道如何使用JavaScript获取给定网页(没有内容)的纯HTML结构吗?

我试图在PhantomJS中尝试这样做,它提供了两个属性(page.content和page.plainText) - 第一个保存网页内容(带有HTML元素标签),第二个保存内容任何HTML标签。遗憾的是,这种属性并不具备纯HTML结构。我试图通过使用git diff(page.content和page.plainText之间的差异)来获取它,但它没有像我期望的那样工作。

1 个答案:

答案 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);