2010-03-24 80 views
17

我是Python新手,在Windows(pywin)上使用Python 3.1。我需要解析一些HTML,在特定的HTML标签之间实现额外的值,并且对我的选项数组感到困惑,而且我发现的所有内容都适用于Python 2.x。我读过关于Beautiful Soup,HTML5Lib和lxml的热烈讨论,但我无法弄清楚如何在Windows上安装这些。用Python 3解析HTML的最佳库和例子?

问题:

  1. 你推荐什么HTML解析器?
  2. 我该如何安装? (很温柔,我对Python完全陌生,记得我在Windows上)
  3. 你有一个简单的例子来说明如何使用推荐的库从特定的URL中获取HTML并从中返回值是这样的:

    < DIV CLASS = “foo” 的> <表> <TR> <TD>富</TD > </TR > < /表> <一类= “链接的” href ='/ blahblah '>链接</a > </DIV >

(比方说我们要返回 “/ blahblah”)

回答

5

Python 3中的网页抓取目前支持非常差,所有像样的图书馆只使用Python 2.工作如果必须在Python网络刮,使用Python 2

虽然Beautiful Soup经常被推荐的(在堆栈溢出有关的网络使用Python拼抢每一个问题表明它),它不是对于Python 3来说它和Python 2一样好;我甚至无法安装它,因为安装代码仍然是Python 2.

至于适用于Python 3的足够且易于安装的解决方案,您可以尝试the library's HTML parser,尽管PythonBand3自带了相当简陋的准系统。

+1

任何想法如何使用内置的HTML解析器来获取标签的内容? – Teifion 2010-11-09 17:18:58

+1

美丽的汤有很好的写在它的当前状态。 http://www.crummy.com/software/BeautifulSoup/3.1-problems.html – dyork 2011-07-04 23:55:19

6

如果您的HTML格式正确,您有很多选项,例如saxdom。如果格式不正确,则需要容错解析器,如Beautiful soup,element tidylxml的HTML解析器。没有解析器是完美的,当呈现各种破碎的HTML,有时我必须尝试多一个。 LxmlElementree使用比Beautiful soup更多标准的大多数兼容API。

在我看来,lxml是用于处理xml文档的最佳模块,但Python中包含的ElementTree仍然非常不错。在过去,我使用Beautiful soup将HTML转换为xml,并构造了用于处理数据的ElementTree