如何在Python中使用<body>
获取html5lib
元素的内容?
示例输入数据:<html><head></head><body>xxx<b>yyy</b></hr></body></html>
预期输出:xxx<b>yyy</b></hr>
即使HTML被破坏(未封闭的标签,......)也应该有效。
答案 0 :(得分:4)
html5lib
允许您使用各种标准树格式解析文档。您可以使用lxml执行此操作,如下所示,或者您可以按照user documentation中的说明操作minidom,ElementTree或{{ 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
中。