【问题标题】:Should I use regex or just DOM/string manipulation? [closed]我应该使用正则表达式还是只使用 DOM/字符串操作? [关闭]
【发布时间】:2013-08-04 23:09:11
【问题描述】:

有时我不确定何时必须使用其中一个。我通常用 Python 解析各种东西,但我想把这个问题集中在 HTML 解析上。

就我个人而言,当必须解析两个以上的常规元素(例如,新闻列表的标题和正文)时,我发现 DOM 操作非常有用。

但是,我发现自己处于不清楚构建正则表达式或尝试仅通过操作字符串来获得所需值的情况。一个特定的虚构示例:我必须获取相册的照片总数,而获取此信息的唯一方法是使用这种方式解析照片的数量:

(190 个中的 1 个)

所以我必须从整个 HTML 文档中获取“190”。我可以为此编写一个正则表达式,尽管用于解析 HTML 的正则表达式并不是最好的,或者这就是我一直理解的。另一方面,使用 DOM 对我来说似乎是压倒性的,因为它只是一个简单的元素。字符串操作似乎是最好的方法,但我不确定在这种类似的情况下是否应该这样做。

您能告诉我如何使用 Python(或任何其他语言)从 HTML 文档中解析这些单一元素吗?

【问题讨论】:

    标签: python html regex parsing html-parsing


    【解决方案1】:

    这是一个主观问题(带有主观答案),但总的来说,我会尽量避免使用正则表达式来解析 HTML/XML,就像 SO 中的 previously discussed 一样。只有当带有标记的输入字符串很小并且不可能变得更复杂,并且正在搜索的模式是明确的并且很容易描述为正则表达式时,我才会使用正则表达式。这是一个平衡适合工作的工具与实用需求的问题。

    对于您的具体示例,我认为可以从正则表达式开始。但是,如果您发现自己从输入中提取额外信息和/或正则表达式开始变得繁琐,请切换到解析器。

    【讨论】:

      【解决方案2】:

      人们不愿使用正则表达式来搜索 HTML,因为它在解析标签时不是适合这项工作的工具。但一切都应根据具体情况考虑。您不是在搜索标签,而是在文档中搜索定义明确的字符串。在我看来,最简单的解决方案只是一个正则表达式或某种 XPath 表达式——简单的解析需要简单的工具。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-04-01
        • 1970-01-01
        • 1970-01-01
        • 2016-12-17
        • 1970-01-01
        • 2011-07-08
        • 2018-07-05
        相关资源
        最近更新 更多