使用 Python 解析 HTML,而不考虑正确的标签层次结构

Parsing HTML with Python with no regard for correct tag hierarchy

我想解析一个文档,该文档在语法上是 html 文档(使用带有属性的标签等),但在结构上不遵循规则(例如可能有 <html> 标签在 <div> 标签内 <body> 标签内)。我也不想要 XML 的额外严格性。不幸的是,lxml 只提供 document_fromstring(),它需要一个 html 根元素,以及 fragment_fromstring(),这又不允许有任何 html 或 [=18] =] 标签在不寻常的地方。

如何解析没有 "fixing" 错误结构的文档?

BeautifulSoup 应该可以做到这一点。

情况如下:

from bs4 import BeautifulSoup
import requests

r = requests.get(url)
soup = BeautifulSoup(r.text,'html.parser')

然后您可以搜索 "soup" 寻找您要查找的内容。