用Python 2.7解析HTML - 用HTMLParser、SGMLParser还是Beautiful Soup?
我想用Python 2.7做一些网页数据抓取,但我对HTMLParser
、SGMLParser
和Beautiful Soup之间的区别没有什么了解。
它们都是在解决同一个问题吗,还是说它们存在的原因不同?哪个最简单,哪个最强大,哪个是默认的选择(如果有的话)?
另外,如果我忽略了什么重要的选项,请告诉我。
编辑:我应该提一下,我在HTML解析方面不是特别有经验,我特别想知道哪个工具能让我最快上手,目标是解析一个特定网站的HTML。
3 个回答
6
BeautifulSoup主要是用来处理那些在网上找到的脏乱HTML代码的。它可以解析任何旧的东西,但速度比较慢。
现在很流行的一个选择是lxml.html,它速度快,而且如果需要的话,可以和BeautifulSoup一起使用。
14
我在解析HTML的时候,使用并推荐lxml和pyquery这两个工具。几个月前我需要写一个网络爬虫,试过很多流行的替代品,比如HTMLParser和BeautifulSoup,最后我选择了lxml和pyquery的语法糖。我还没试过SGMLParser。
根据我的经验,lxml基本上是功能最强大的库,它的底层用C语言写的,性能比其他选择要好。至于pyquery,我特别喜欢它那种受jQuery启发的语法,这让操作DOM(文档对象模型)变得更轻松有趣。
如果你决定试试,这里有一些你可能会觉得有用的资源:
- lxml主页
- pyquery主页
- BeautifulSoup和lxml性能对比
- 针对Python 2.7的pyquery Windows安装包 - 我当时设置pyquery的时候遇到了不少麻烦 :)
好吧,这就是我的一点看法 :) 希望对你有帮助。