Ruby:清理HTML,使用Hpricot还是只使用正则表达式?

Ruby:清理HTML,使用Hpricot还是只使用正则表达式?,html,ruby,hpricot,Html,Ruby,Hpricot,我希望对HTML进行一些基本的清理。基本上,我们希望创建一个允许和拒绝任何其他标记的白名单 在这种情况下,Hpricot值得吗?它是否有一个我忽略了的功能,可以避免我重写车轮?还是最好只使用regex编写一个标签白名单,并通过它来传递一个HTML文档 使用HTML时,正则表达式可能会变得非常棘手,我知道很多专家都严格反对它——我只是在寻找阻力最小的路径。阻力最小的路径一开始似乎是正则表达式,但当你通过它输入更多的文本时,你会意识到它会一次又一次地中断,为你做更多的工作。这就是为什么有经验的程序员

我希望对HTML进行一些基本的清理。基本上,我们希望创建一个允许和拒绝任何其他标记的白名单

在这种情况下,Hpricot值得吗?它是否有一个我忽略了的功能,可以避免我重写车轮?还是最好只使用regex编写一个标签白名单,并通过它来传递一个HTML文档


使用HTML时,正则表达式可能会变得非常棘手,我知道很多专家都严格反对它——我只是在寻找阻力最小的路径。

阻力最小的路径一开始似乎是正则表达式,但当你通过它输入更多的文本时,你会意识到它会一次又一次地中断,为你做更多的工作。这就是为什么有经验的程序员知道使用XML/DOM解析器来解决这样一个常见的问题

我建议您使用Nokogiri而不是Hpricot,因为它更快,维护更好


Sanitize使用Nokogiri来完成您正在做的事情。

起初,阻力最小的路径似乎是regex,而且,对于您控制的内容非常简单的任务,使用它是安全的。一旦您的需求变得更加复杂,或者您正在解析无法控制的内容,regex可能会越来越失败。我写过spider、页面分析器和提要聚合器,还有一些格式严重错误的页面,一个好的解析器可以减轻处理大量不良内容的痛苦。