HTML解析与正则表达式的比较

3
我有一个结构良好的固定HTML源,传入的数据清晰且很小,只包含一小部分div列表。我知道可以使用HTML解析器来解析HTML,但这似乎是一种特殊情况,我不确定应该使用哪种解析器。以下是问题条件:
  • 数据清晰且结构良好
  • 数据量较小
  • 性能很重要,应用程序必须尽可能地获取数据
  • 应用程序将数据写入MongoDB数据库
  • 实现编程语言将是Scala或Python
任何建议都很宝贵,那我该怎么办呢?
1个回答

7
我仍然建议使用HTML解析器,因为至少有一个特定的数据格式和专门理解该格式的工具。
如果性能很重要,可以使用非常快速的lxml包。对于HTML,请使用lxml.html
您还可以使用令人惊叹的BeautifulSoup包,并让它在幕后使用lxml解析器。此外,如果您需要解析的数据位于HTML文档的特定部分,则可以通过请求BeautifulSoup仅解析HTML文档的相关部分来获得性能提升,请参见:仅解析文档的一部分

为了遵循HTML + regex主题的传统,这里提供一个著名的主题参考,介绍为什么不应该使用正则表达式解析HTML:


我知道在HTML解析中不应该使用正则表达式,我知道什么是正则表达式以及它的实现方式,我也学过自动机课程。大多数情况下,这是由于HTML结构不稳定和数据量大,但对于我们的情况并非如此,我们有一个良好结构化且数据量较小的数据需要处理。因此,我感谢您的回答,但我认为这不是我们正在寻找的。 - Hüseyin Zengin
@HüseyinZengin 谢谢。如果不知道你有什么数据、有多少数据以及需要从中解析哪些数据,则很难作出判断。我猜你最好的选择是自己测量性能。例如,使用 lxml 和仅使用 regex 的方法实现它,并进行基准测试。 - alecxe

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接