0

有时我不确定什么时候必须使用一个或另一个。我通常用 Python 解析各种各样的东西,但我想把这个问题集中在 HTML 解析上。

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

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

(190 个中的 1 个)

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

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

4

2 回答 2

4

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

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

于 2013-08-04T23:11:56.597 回答
2

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

于 2013-08-04T23:11:45.453 回答