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

发布于 2024-11-10 22:14:43 字数 195 浏览 3 评论 0原文

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

输入数据示例:xxxyyy

预期输出: xxxyyy

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

How can I get the content of <body> element by using html5lib in Python?

Example input data: <html><head></head><body>xxx<b>yyy</b></hr></body></html>

Expected output: xxx<b>yyy</b></hr>

It should work even if HTML is broken (unclosed tags,...).

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

反话 2024-11-17 22:14:43

html5lib 允许您使用各种标准树格式来解析文档。您可以使用 lxml 来完成此操作,就像我在下面所做的那样,或者您可以按照用户文档中的说明使用 minidom, ElementTreeBeautifulSoup

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) 

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

html5lib allows you to parse your documents using a variety of standard tree formats. You can do this using lxml, as I've done below, or you can follow the instructions in their user documentation to do it either with minidom, ElementTree or BeautifulSoup.

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

Response to comment

It is possible to acheive this without installing any external libs using their own simpletree.py, but judging by the comment at the start of the file
I would guess this is not the recommended way...

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

If you still want to do this, however, you can parse the html document like so:

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

and then find the element you're looking for by doing a breadth-first search of the child nodes in the document. The nodes are kept in an array named childNodes and each node has a name stored in the field name.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文