如何比较python中的两个HTML文件并只打印差异?

如何比较python中的两个HTML文件并只打印差异?,python,html,comparison,Python,Html,Comparison,我有两个从sonar生成的html报告,显示了代码中的问题 问题陈述:我需要比较两份sonar报告,找出差异,即引入的新问题。基本上需要找到html中的差异并只打印这些差异 我几乎没试过什么- import difflib file1 = open('sonarlint-report.html', 'r').readlines() file2 = open('sonarlint-report_latest.html', 'r').readlines() htmlDiffer = difflib

我有两个从sonar生成的html报告,显示了代码中的问题

问题陈述:我需要比较两份sonar报告,找出差异,即引入的新问题。基本上需要找到html中的差异并只打印这些差异

我几乎没试过什么-

import difflib
file1 = open('sonarlint-report.html', 'r').readlines()
file2 = open('sonarlint-report_latest.html', 'r').readlines()

htmlDiffer = difflib.HtmlDiff()
htmldiffs = htmlDiffer.make_file(file1, file2)

with open('comparison.html', 'w') as outfile:
    outfile.write(htmldiffs)
现在,这给了我一个comparison.html,它只不过是两个html差异。它不会只打印不同的行


我是否应该尝试HTML解析,然后以某种方式将差异打印出来?请提出建议。

我将尝试逐行遍历每个html文件,并检查这些行是否相同

with open('file1.html') as file1, open('file2.html') as file2:
    for file1Line, file2Line in zip(file1, file2):
        if file1Line != file2Line:
            print(file1Line.strip('\n'))
            print(file2Line.strip('\n'))

您必须处理一行中的换行符和多行差异,但这可能是一个好的开始:)

如果您使用
difflib.difference
,则只能保留差异行,并使用每行写入的两个字母代码进行过滤。从:

类差异库差异

这是一个用于比较行序列的类 文本,并产生人类可读的差异或增量。不同 使用SequenceMatcher比较行序列,并 比较相似(接近匹配)行中的字符序列

不同增量的每一行都以两个字母的代码开头:

代码意义

序列1唯一的'-'行

序列2唯一的“+”行

两个序列共用的“”行

“?”两个输入序列中都不存在行

以“?”开头的行尝试将眼睛引导到行内 两种输入序列中均不存在差异。这些 如果序列包含制表符,则行可能会混淆


通过保持以“-”和“+”开头的行只是区别。

我认为这对于大型
html
文件来说不是很有效,但是检查它的方法似乎很好。