2009-10-19 28 views
6

Tengo instantáneas de varias páginas web tomadas 2 veces. ¿Cuál es un método confiable para determinar qué páginas web se han modificado?cómo determinar si la página web ha sido modificada

No puedo confiar en algo así como una fuente RSS, y necesito ignorar el ruido menor como el texto de fecha.

Idealmente estoy buscando una solución de Python, pero un algoritmo intuitivo también sería genial.

Gracias!

+0

¿Se refiere a imágenes cuando dice instantáneas? O HTML histórico? –

+0

solo el HTML - sin archivos de respaldo – hoju

+0

¿Desea diferenciar la estructura (etiquetas html) o el contenido o ambos? – elhoim

Respuesta

8

Bueno, primero debes decidir qué es ruido y qué no. Puede usar un analizador HTML como BeautifulSoup para eliminar el ruido, imprimir bastante el resultado y compararlo como una cadena.

Si busca una solución automática, puede usar difflib.SequenceMatcher para calcular las diferencias entre las páginas, calcule el similarity y compárelo hasta un umbral.

0

Algo como Levenshtein Distance puede ser útil si establece el umbral de los cambios a una distancia que ignore la cantidad de ruido adecuada para usted.

+0

La distancia de Levenshtein es O (n^2) y lo más probable es que sea demasiado ineficaz para páginas web enteras. Sin embargo, puedes generalizarlo a secuencias y percibir palabras como símbolos en lugar de caracteres. Aquello podría funcionar. – bayer

3

La solución realmente depende si está raspando un sitio específico o está intentando crear un programa que funcione para cualquier sitio.

Se puede ver qué áreas cambian con frecuencia hacer algo como esto:

diff <(curl http://stackoverflow.com/questions/) <(sleep 15; curl http://stackoverflow.com/questions/) 

Si su único preocupado por un solo sitio, puede crear algunas expresiones de sed para filtrar las cosas como marcas de tiempo. Puede repetir hasta que no se muestre ninguna diferencia para campos pequeños.

El problema general es mucho más difícil, y sugiero comparar el número total de palabras en una página para empezar.

+0

Sí, estoy buscando un enfoque general. El recuento total de palabras es una idea interesante (y directa). – hoju

-1

solo tome instantáneas de los archivos con MD5 o SHA1 ... si los valores difieren la próxima vez que los revise, entonces serán modificados.

+0

el problema es que ese tipo de enfoque no puede hacer frente al ruido. Por ejemplo, una página web puede mostrar la fecha de hoy, que cambiará incluso cuando el contenido no haya sido modificado. – hoju

+0

ic .. he entendido mal su requisito. – ghostdog74

Cuestiones relacionadas