1

Je crée une application Java qui vérifie si une page Web a été mise à jour.Alerte si la page Web a été mise à jour

Toutefois, certaines pages Web ne comportent pas d'en-tête «Dernière modification».

J'ai même essayé de vérifier une modification de la longueur du contenu, mais cette méthode n'est pas fiable car parfois la longueur du contenu change sans modification de la page Web donnant une fausse alarme.

J'ai vraiment besoin d'aide ici car je ne suis pas capable de penser à une seule méthode infaillible.

Des idées ???

Répondre

1

Probablement l'option la plus fiable serait de stocker un hachage du contet de page.

+0

bien ... mais ma longueur de contenu ne cesse de changer de 2-3 caractères. .. qui pourrait changer le hashcode .... aucune idée pourquoi la longueur du contenu change par de si petites quantités ??? – DanMatlin

+0

Je suppose que vous pourriez affiner la "vérification de diff" en ignorant les caractères d'espace ou des trucs comme ça avant d'appliquer l'algorithme de hachage. Essayez quelque chose comme '.trim()' en premier. Je pense qu'il n'y a pas de solution pare-balles pour cela, vous devrez appliquer des heuristiques. –

+0

Le changement de hachage ne fonctionnera pas dans de nombreux cas. – bjedrzejewski

1

Si vous dites que les changements de longueur de contenu alors probablement les pages Web que vous essayez de vérifier sont générés dynamiquement et ne sont pas de nature statique. Si tel est le cas, même si vous vérifiez l'en-tête 'last-modified', il ne reflètera pas les changements de contenu dans la plupart des cas. Je suppose que la seule solution serait une solution spécifique pour une page spécifique, une page que vous pourriez analyser et rechercher des changements de contenu dans certaines parties de cette page, une autre page que vous pourriez vérifier Je devrais vérifier en utilisant la longueur du contenu, à mon avis, il n'y a aucun moyen de le faire dans un mode unifié pour toutes les pages sur Internet. Une autre option consisterait à discuter avec les personnes qui développent les pages que vous recherchez de certains marqueurs qui vous aideront à déterminer si la page a changé ou non, mais cela dépend bien sûr de votre cas d'utilisation spécifique et de ce que vous en faites.

+0

hmmm ... je pense que vous avez raison ... – DanMatlin

0

Si vous vous connectez tout le temps à la page Web comme ce code, il peut aider:

import org.jsoup.Jsoup; 
import org.jsoup.nodes.Document; 

public class main { 

    String updatecheck = ""; 

    public static void main(String args[]) throws Exception { 

     //Constantly trying to load page 
     while (true) { 

      try { 
       System.out.println("Loading page..."); 

       // connecting to a website with Jsoup 
       Document doc = Jsoup.connect("URL").userAgent("CHROME").get(); 

       // Selecting a part of this website with Jsoup 
       String pick = doc.select("div.selection").get(0); 

       // printing out when selected part is updated. 
       if (updatecheck != pick){ 
       updatecheck = pick; 
       System.out.println("Page is changed."); 
       } 

      } catch (Exception e) { 
       e.printStackTrace(); 
       System.out.println("Exception occured.... going to retry... \n"); 
      } 
     } 
    } 
} 

How to get notified after a webpage changes instead of refreshing?

hash est probablement
Questions connexes