如何在Python中使用html5lib获取body元素的内容?

时间:2011-05-28 11:37:03

标签: python html5lib

如何在Python中使用<body>获取html5lib元素的内容?

示例输入数据:<html><head></head><body>xxx<b>yyy</b></hr></body></html>

预期输出:xxx<b>yyy</b></hr>

即使HTML被破坏(未封闭的标签,......)也应该有效。

1 个答案:

答案 0 :(得分:4)

html5lib允许您使用各种标准树格式解析文档。您可以使用lxml执行此操作,如下所示,或者您可以按照user documentation中的说明操作minidomElementTree或{{ 3}}。

file = open("mydocument.html")
doc = html5lib.parse(file, treebuilder="lxml")
content = doc.findtext("html/body", default=None):

对评论的回应

可以在不使用自己的BeautifulSoup安装任何外部库的情况下实现此目的,但可以通过文件开头的注释来判断 我猜这不是推荐的方式......

# Really crappy basic implementation of a DOM-core like thing

但是,如果你仍想这样做,你可以像这样解析html文档:

f = open("mydocument.html")
doc = html5lib.parse(f) 

然后通过广度优先搜索文档中的子节点来查找您正在查找的元素。节点保存在名为childNodes的数组中,每个节点都有一个名称存储在字段name中。