Pergunta

Tenho instantâneos de várias páginas da Web tiradas 2 vezes. Qual é um método confiável para determinar quais páginas da web foram modificadas?

Não posso confiar em algo como um feed RSS e preciso ignorar um ruído menor, como o texto da data.

Idealmente, estou procurando uma solução Python, mas um algoritmo intuitivo também seria ótimo.

Obrigado!

Foi útil?

Solução

Bem, primeiro você precisa decidir o que é barulho e o que não é. Você pode usar um analisador html como Belo grupo Para remover o ruído, o resultado prendido e compare-o como uma string.

Se você está procurando uma solução automática, pode usar difflib.SequenceMatcher Para calcular as diferenças entre as páginas, calcule o semelhança e compare -o com um limiar.

Outras dicas

A solução realmente depende se você estiver raspando um site específico ou estiver tentando criar um programa que funcione para qualquer site.

Você pode ver quais áreas mudam frequentemente fazendo algo assim:

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

Se você está preocupado apenas com um único site, pode criar algumas expressões Sed para filtrar coisas como carimbos de hora. Você pode repetir até que nenhuma diferença seja mostrada para pequenos campos.

O problema geral é muito mais difícil, e eu sugeriria comparar a contagem total de palavras em uma página para iniciantes.

Algo como Distância de Levenshtein Pode ser útil se você definir o limite das alterações a uma distância que ignorasse a quantidade certa de ruído para você.

Basta tirar instantâneos dos arquivos com MD5 ou SHA1 ... Se os valores diferirem na próxima vez que você verificar, eles serão modificados.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top