在 Python 中解析 HTML [关闭]

Posted

技术标签:

【中文标题】在 Python 中解析 HTML [关闭]【英文标题】:Parsing HTML in Python [closed] 【发布时间】:2010-10-17 13:57:47 【问题描述】:

如果我不能使用 BeautifulSoup 或 lxml,解析 html 的最佳选择是什么?我有一些使用 SGMLlib 的代码,但它有点低级,现在已弃用。

如果它能够忍受一些格式错误的 HTML,我会更喜欢它,尽管我很确定大部分输入都会很干净。

【问题讨论】:

如果我可能会问,你为什么不能使用 lxml 或 BS? 我试图避免答案完全偏离轨道。我避免使用 BeautifulSoup 的原因非常值得商榷,但我把它留到了另一天! (我避免使用 lxml 的原因很简单——在 Mac OSX 或 Linux 上安装它完全失败:( 这里是如何在 Linux 上安装 lxml:sudo apt-get install libxml2-dev libxslt-dev python2.7-dev(如果你使用 Python 2.6,python2.6-dev)。然后sudo pip install lxml. 【参考方案1】:

Python 有一个native HTML parser,但是 Nick 建议的 Tidy 包装器可能也是一个不错的选择。 Tidy 是一个很常见的库,(是用 C 写的吗?)

【讨论】:

有人能告诉我为什么人们建议使用 BeautifulSoup 或 lxml 而不是原生 HTML 解析器吗? 链接坏了……我猜这是html.parser?或version for legacy Python。 模块仍然存在,但 URL 似乎已更改。固定。【参考方案2】:

也许µTidylib 会满足您的需求?

【讨论】:

【参考方案3】:

您可以使用 Pallet 在 Mac (OS X) 上轻松无缝地安装 lxml 和许多其他 python 模块,即MacPorts official GUI

模块名称为 py27-lxml。像 1,2,3 一样简单。

【讨论】:

【参考方案4】:

http://www.xmlhack.com/read.php?item=1392 http://sourceforge.net/projects/pirxx/

http://pyxml.sourceforge.net/topics/

我没有太多使用 python 的经验,但我过去使用过 Xerces(来自 Apache 基金会),发现它非常有用。学习曲线也不错,尽管我不是从 python 的角度来的。不过我建议你考虑一下。 (我包含的前两个链接讨论了 Xerces 的 python 接口,最后一个是谷歌第一次点击“python xml”)。

【讨论】:

我知道你想要一个 HTML 解析器,但这些都是不错的起点。【参考方案5】:

htql 擅长处理格式错误的 html:

http://htql.net/

【讨论】:

【参考方案6】:

html5lib 不错:http://code.google.com/p/html5lib/

更新:上面的链接坏了。以上第三方镜像,可通过https://github.com/html5lib/gcode-import访问

【讨论】:

虽然此链接可能会回答问题,但最好在此处包含答案的基本部分并提供链接以供参考。如果链接页面发生更改,仅链接的答案可能会失效。 这不是相当仅链接的答案,@Dgw。它包含一个完整的句子,提到了链接到的库的名称,在这个问题的情况下,库的名称是答案的基本部分。如果链接失效,任何人都可以搜索它。

以上是关于在 Python 中解析 HTML [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

Python3 XML解析

python3 BeautifulSoup模块

Python中的RSS提要解析器库[关闭]

使用 HTML 解析器获取特定 div 的内容 [关闭]

Python中的JavaScript解析器[关闭]

通过 XPath 解析 HTML [关闭]