【问题标题】:Parsing HTML with Python 2.7 - HTMLParser, SGMLParser, or Beautiful Soup?使用 Python 2.7 解析 HTML - HTMLParser、SGMLParser 还是 Beautiful Soup?
【发布时间】:2011-09-23 13:33:43
【问题描述】:

我想用 Python 2.7 做一些屏幕抓取,但我不知道 HTMLParserSGMLParser 或 Beautiful Soup 之间的区别。

这些都是为了解决同一个问题,还是出于不同的原因而存在?哪个最简单,哪个最健壮,哪个(如果有)是默认选择?

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

编辑:我应该提一下,我在 HTML 解析方面并不是特别有经验,而且我特别感兴趣的是哪一个能让我最快地移动,目标是解析一个特定的 HTML网站。

【问题讨论】:

标签: python html parsing beautifulsoup html-parsing


【解决方案1】:

我正在使用并推荐使用 lxmlpyquery 来解析 HTML。几个月前我不得不编写一个网络抓取机器人,在我尝试过的所有流行替代方案中,包括 HTMLParserBeautifulSoup,我选择了 lxmlpyquery 的语法糖。我还没有尝试过 SGMLParser

就我所见,lxml 或多或少是功能最丰富的库,与其他替代品相比,它的底层 C 内核具有相当高的性能。至于 pyquery,我真的很喜欢它受 jQuery 启发的语法,它让浏览 DOM 变得更加愉快。

如果您决定尝试一下,以下是一些您可能会发现有用的资源:

嗯,这是我的 2c :) 我希望这会有所帮助。

【讨论】:

  • 您如何比较 lxmlHTMLParser 的易用性,而不考虑性能?
  • 好吧,我想这取决于你的经验和品味,但我个人发现 lxml 的面向文档的方法比 HTMLParser 的基于流的模型更直观。因此,我发现 lxml 更易于使用,但我可能并不完全公平,因为几个月前我对不同库进行了初步比较之后,我只使用了 lxml。
【解决方案2】:

BeautifulSoup 特别适用于在野外发现的脏 HTML。它会解析任何旧的东西,但速度很慢。

最近一个非常流行的选择是 lxml.html,它速度很快,如果需要可以使用 BeautifulSoup。

【讨论】:

    【解决方案3】:

    看看Scrapy。它是一个专门用于报废的python框架。使用XPath 将信息提取到元素变得非常容易。它还具有一些非常有趣的功能,例如为抓取的数据定义模型(以便能够以不同的格式导出)、身份验证和递归跟踪链接。

    【讨论】:

      【解决方案4】:

      嗯,软件就像汽车....不同的驾驶方式!

      使用 BeautifulSoup (4)。

      【讨论】:

      • 软件就像汽车。 . .很高兴知道您是否驾驶轿车、小型货车、跑车或 18 轮车。是的,他们都在开车,但他们有不同的目标,应该相应地被驱动。
      猜你喜欢
      • 2011-09-27
      • 1970-01-01
      • 1970-01-01
      • 2014-12-16
      • 2019-07-03
      • 2022-12-02
      • 1970-01-01
      • 1970-01-01
      • 2013-10-21
      相关资源
      最近更新 更多