用Python 2.7解析HTML - 用HTMLParser、SGMLParser还是Beautiful Soup?

16 投票
3 回答
6830 浏览
提问于 2025-04-16 20:22

我想用Python 2.7做一些网页数据抓取,但我对HTMLParserSGMLParser和Beautiful Soup之间的区别没有什么了解。

它们都是在解决同一个问题吗,还是说它们存在的原因不同?哪个最简单,哪个最强大,哪个是默认的选择(如果有的话)?

另外,如果我忽略了什么重要的选项,请告诉我。

编辑:我应该提一下,我在HTML解析方面不是特别有经验,我特别想知道哪个工具能让我最快上手,目标是解析一个特定网站的HTML。

3 个回答

1

看看这个 Scrapy。它是一个专门用来抓取数据的Python框架。使用它,你可以很简单地通过 XPath 来提取网页上的信息。它还有一些很有趣的功能,比如可以为抓取到的数据定义模型(这样就能把数据导出成不同的格式),支持身份验证,以及可以递归地跟踪链接。

6

BeautifulSoup主要是用来处理那些在网上找到的脏乱HTML代码的。它可以解析任何旧的东西,但速度比较慢。

现在很流行的一个选择是lxml.html,它速度快,而且如果需要的话,可以和BeautifulSoup一起使用。

14

我在解析HTML的时候,使用并推荐lxmlpyquery这两个工具。几个月前我需要写一个网络爬虫,试过很多流行的替代品,比如HTMLParserBeautifulSoup,最后我选择了lxmlpyquery的语法糖。我还没试过SGMLParser

根据我的经验,lxml基本上是功能最强大的库,它的底层用C语言写的,性能比其他选择要好。至于pyquery,我特别喜欢它那种受jQuery启发的语法,这让操作DOM(文档对象模型)变得更轻松有趣。

如果你决定试试,这里有一些你可能会觉得有用的资源:

好吧,这就是我的一点看法 :) 希望对你有帮助。

撰写回答