我正在尝试从网站中提取的内容中删除html标记。
它可能包含完整的html标记<a href="\testlink"> tst</a>
或像<div class="testClass"
或class="testClass">
这样的破碎的,我想出了一种删除完整标签的方法,可以使用javascript或jquery(正则表达方式)删除部分标签吗??? p>
我用来删除完整代码的代码是replace(/<(?:.|\n)*?>/gm, '')
答案 0 :(得分:0)
即使使用高级语言,使用正则表达式也很难。但是您可以将html注入当前DOM或例如隐藏的iframe中。然后,您构建一个“节点walker”,沿着DOM-Tree向下移动并收集HTML-Nodes的“内部文本”。只要DOM代表它们,您就可以使用原生DOM-Parser获得所需的内容。
我做了一次这样的工作:
var nodes = document.getElementsByTagName('BODY');
function nodeWalker(node) {
if(!node.hasChildNodes()) {
return;
}
for(var i=0; i<node.childNodes.length; i++) {
// filter by node type == 3 equals TEXT_NODE
if((node.childNodes[i].nodeType == 3) && node.childNodes[i].nodeValue.length > 0) {
// extract content in node.childNodes[i].nodeValue
}
// type == 1 equals ELEMENT_NODE
else if(node.childNodes[ i ].nodeType == 1) {
nodeWalker(node.childNodes[i]);
}
}
}
有关所有可能的节点类型,请参阅http://www.w3schools.com/dom/dom_nodetype.asp!
另一种方法是使用AJAX和服务器端DOM-Parser。