Una descripción de lo que voy a lograr:HTML Dif/Patch Algoritmo
- Entrada 2 (N no es esencial) documentos HTML.
- Estandarizar el formato HTML
- Diferenciar los dos documentos: los estilos externos no son importantes, pero se incluirá todo lo incluido en el documento.
- Determine el delta en el nivel de elemento HTML de bloque.
Ampliar el último punto:
imaginar dos páginas del mismo sitio que ambos comparten una barra lateral con lo que probablemente fue un ancestro común que ha sido copiar/pegar. Cada página tiene algunos cambios menores en la barra lateral. El diff revelará estos cambios, luego puedo "acercarme" al DOM para encontrar el primer elemento de bloque común compartido por ellos, o simplemente establecer de manera predeterminada el <body>
. En este caso, me gustaría caminar y encontrar que, oh, comparten un <div id="sidebar">
común.
Estoy familiarizado con DaisyDiff y la aplicación es similar, en el mundo CMS.
También he comenzado a jugar con la biblioteca Google diff-patch.
Quería hacer esta clase de pregunta no específica para solicitar algún consejo u orientación que cualquiera piense que podría ser útil. Actualmente, si me pones una pistola en la cabeza y me dices "CÓDIGO", volvería a escribir DaisyDiff en Python y agregaría esta lógica de nivel de bloque. Pero pensé que tal vez había una mejor manera y las respuestas a Anyone have a diff algorithm for rendered HTML? me hicieron sentir cálido y confuso.
Relacionados: http://stackoverflow.com/questions/1576459/generate-pretty-diff-html-in-python. –
No estoy seguro de su aplicación exacta, pero un algoritmo de clasificación DOM es utilizado por proyectos como http://www.readability.com/ para extraer contenido relevante. Si desea diferenciar solo en el núcleo de la página, algo así podría tener sentido –
Me encantaría escuchar una actualización sobre este proyecto; si lograste encontrar lo que estabas buscando y si planeas abrirlo todo :): – onassar