如何有效地比较两个HTML页面内容

时间:2012-11-14 14:18:13

标签: html ruby string nokogiri

我有两个HTML页面,我想要比较它们的源代码。我已将页面源转换为字符串,我需要知道比较两个巨大字符串的最佳方法。

  • 我应该使用常规比较方法,例如page1.eql?(page2)
  • str.eql?(str1)是否也会比较符号,例如@

我真的很想知道比较的最佳方法。

4 个答案:

答案 0 :(得分:1)

我不确定你想要比较多详细。如果您想要“类似差异”功能,可以查看之前提出的类似问题:diff a ruby string or array

答案 1 :(得分:1)

这是levenshtein方法,它将打印字符串之间的差异,我不确定这是否是你正在寻找的。否则我建议只使用page1.eql?(page2)

def levenshtein(a, b)
  case
    when a.empty? then b.length
    when b.empty? then a.length
    else [(a[0] == b[0] ? 0 : 1) + levenshtein(a[1..-1], b[1..-1]),
          1 + levenshtein(a[1..-1], b),
          1 + levenshtein(a, b[1..-1])].min
  end
end

答案 2 :(得分:0)

查看loofah gem(github link)。它在语义上区分HTML(和XML)子树,意味着忽略无意义的空格,忽略属性的顺序等。

答案 3 :(得分:0)

尝试使用http://prettydiff.com/?lang=html

Pretty Diff会删除评论和无意义的空白区域,以便进行最准确的比较。它还提供了用于微调各种误报条件的高级选项。