Python 我应该使用正则表达式还是仅仅使用DOM/字符串操作?

Python 我应该使用正则表达式还是仅仅使用DOM/字符串操作?,python,html,regex,parsing,html-parsing,Python,Html,Regex,Parsing,Html Parsing,有时我不确定什么时候我必须使用一个或另一个。我通常用Python解析所有类型的东西,但我想把这个问题集中在HTML解析上 就我个人而言,当必须解析两个以上的常规元素(例如,新闻列表的标题和正文)时,DOM操作非常有用 然而,我发现自己处于这样一种情况:我不清楚如何构建一个正则表达式,或者仅仅通过操纵字符串来获取所需的值。一个特别的虚构的例子:我必须获得相册的照片总数,唯一的方法是使用以下方式解析照片的数量: (第1页,共190页) 所以我必须从整个HTML文档中获取“190”。我可以为此编写一个

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

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

然而,我发现自己处于这样一种情况:我不清楚如何构建一个正则表达式,或者仅仅通过操纵字符串来获取所需的值。一个特别的虚构的例子:我必须获得相册的照片总数,唯一的方法是使用以下方式解析照片的数量:

(第1页,共190页)

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


您能告诉我如何使用Python(或任何其他语言)解析HTML文档中的此类单个元素吗?

人们不愿使用正则表达式来搜索HTML,因为在解析标记时,它不是合适的工具。但每件事都应该逐案考虑。您不是在搜索标记,而是在搜索文档中定义良好的字符串。在我看来,最简单的解决方案只是一个正则表达式或某种XPath表达式——简单的解析需要简单的工具。

人们避免使用正则表达式来搜索HTML,因为它不是解析标记的合适工具。但每件事都应该逐案考虑。您不是在搜索标记,而是在搜索文档中定义良好的字符串。在我看来,最简单的解决方案只是一个正则表达式或某种XPath表达式——简单的解析需要简单的工具。

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


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

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

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