如何在Python中使用html5lib
获取<body>
元素的内容?
示例输入数据:<html><head></head><body>xxx<b>yyy</b></hr></body></html>
预期输出:xxx<b>yyy</b></hr>
即使HTML被破坏(未关闭的标签,…),它也应该工作。
html5lib
允许您使用各种标准树格式解析文档。你可以使用lxml来完成这项工作,就像我在下面所做的那样,或者你可以按照他们用户文档中的说明,使用minidom、ElementTree或BeautifulSoup来完成。
file = open("mydocument.html")
doc = html5lib.parse(file, treebuilder="lxml")
content = doc.findtext("html/body", default=None):
对评论的回应
可以在不安装任何外部库的情况下使用自己的simpletree.py来实现这一点,但要根据文件开头的注释来判断我想这不是推荐的方式。。。
# Really crappy basic implementation of a DOM-core like thing
然而,如果你仍然想这样做,你可以像这样解析html文档:
f = open("mydocument.html")
doc = html5lib.parse(f)
然后通过对文档中的子节点进行广度优先搜索来找到您要查找的元素。节点被保存在名为childNodes
的数组中,并且每个节点具有存储在字段name
中的名称。