我在 Python 中使用 XML minidom (xml.dom.minidom),但是 XML 中的任何错误都会杀死解析器。是否可以忽略它们,例如浏览器?我正在尝试用 Python 编写浏览器,但如果标签不完全兼容,它只会引发异常。
FrozenFire
问问题
4502 次
3 回答
12
有一个名为BeautifulSoup的库,我认为这就是您要寻找的。当您尝试解析无效的 XML 时,普通的 XML 解析器将无法工作。BeautifulSoup 更容错,它仍然可以从无效的 XML 中提取信息。
Beautiful Soup 是一个 Python HTML/XML 解析器,专为屏幕抓取等快速周转项目而设计。三个功能使其功能强大:
- 如果你给它错误的标记,Beautiful Soup 不会窒息。它会生成一个解析树,其意义与您的原始文档大致相同。这通常足以收集您需要的数据并逃跑。
- Beautiful Soup 提供了一些用于导航、搜索和修改解析树的简单方法和 Pythonic 习惯用法:用于剖析文档和提取所需内容的工具包。您不必为每个应用程序创建自定义解析器。
- Beautiful Soup 自动将传入文档转换为 Unicode,将传出文档自动转换为 UTF-8。您不必考虑编码,除非文档未指定编码并且 Beautiful Soup 无法自动检测编码。然后你只需要指定原始编码。
Beautiful Soup 解析你给它的任何东西,并为你做树遍历的东西。您可以告诉它“查找所有链接”,或“查找类 externalLink 的所有链接”,或“查找所有 url 匹配“foo.com”的链接,或“查找带有粗体文本的表格标题,然后给出我那条短信。”
于 2008-12-30T10:57:54.883 回答
3
应该注意的是,虽然 HTML 看起来像 XML,但它不是 XML。XHTML 是一种 XML 形式的 HTML。
于 2008-12-30T16:05:16.170 回答
0
例如,请参阅extracting-text-from-html-file-using-python以获取有关在 Python 中解析 HTML 的方法的建议。
于 2008-12-30T10:58:44.057 回答