English 中文(简体)
HTML解析,得到内心的HTML标记
原标题:
  • 时间:2009-05-05 14:13:36
  •  标签:

当我解析HTML我只希望获得最里面的标签为整个文档。我的意图是语义解析HTML文档的数据。

如果我有这样的一些html

<html>
     <table>
           <tr><td>X</td></tr>
           <tr><td>Y</td></tr>
     </table>
</html>

我希望< td > X < / td >和< td > < / td >。这是可能的使用Beautiful Soup或lxml吗?

问题回答

在。net我HtmlAgilityPack库用来做所有的html解析容易。它加载的DOM,您可以选择节点,在没有孩子的情况下选择节点。也许这可以帮助。

后你确定格式良好的文档(例如,通过使用lxml解析它),您可以使用XPath查询所有节点没有子元素。

//*[count(*) = 0]

那个年代为数不多的情况下,你可以使用正则表达式来解析HTML字符串。

<(w+)[^>]*>[^<]*</1s*>

如果你可以使用或DOM处理(即在浏览器)可以使用parentNode属性的标签和递归地计算,并保持最大的一个。

在javascript-pseudocode (FireFox)测试:

var allElements = document.getElementsByTagName("*");
var maxElementReference, maxParentNodeCount = 0;
var i;

for (i = 0; i < allElements.length; i++) {

    var count = recursiveCountParentNodeOn(allElements[i]);

    if (maxParentNodeCount < count) {
        maxElementReference = allElements[i];
        maxParentNodeCount = count;
    }
}




相关问题
热门标签