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

sor*_*rin 1 python html5lib

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

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

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

即使 HTML 损坏(未关闭的标签,...),它也应该可以工作。

Mia*_*rke 5

html5lib允许您使用各种标准树格式解析文档。您可以使用lxml来做到这一点,就像我在下面所做的那样,或者您可以按照他们的用户文档中的说明使用minidomElementTreeBeautifulSoup来做到这一点。

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

回复评论

可以在不使用自己的simpletree.py安装任何外部库的情况下实现这 一点,但从文件开头的注释来看,我猜这不是推荐的方法......

# Really crappy basic implementation of a DOM-core like thing
Run Code Online (Sandbox Code Playgroud)

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

f = open("mydocument.html")
doc = html5lib.parse(f) 
Run Code Online (Sandbox Code Playgroud)

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