IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Java Discussion :

Eviter de charger plusieurs fois la même url


Sujet :

Java

  1. #1
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    116
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2012
    Messages : 116
    Points : 158
    Points
    158
    Par défaut Eviter de charger plusieurs fois la même url
    Bonjour à tous,

    j'ai plusieurs tableau rempli, dont un pour des url, et un pour des path associé.

    J'ai par exemple dans le tableau url : url1, url2, url1, url1
    Et dans le tableau de path : path1, path2, path3, path4

    Un path étant associé à une URL grace à leur indice lors que les tableaux sont remplis.

    Ensuite, je charge l'url, pour en sélectionner un morceau grace au path.

    Le problème étant que je charge à chaque fois l'url, même si elle l'a déjà été auparavant.

    Je vais donc charger url1 puis url2, puis url1 puis url1.

    Ce qui rend le traitement lourd.

    Comment faire pour ne charger la page qu'une fois?

    Voici la portion de code que j'utilise

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    for (i = 0; i < tabUrl.length; i++) {
    			   try {    
     
     
    			           page = webClient.getPage(tabUrl[i]);
    			           List<HtmlElement> nbElements = (List<HtmlElement>) page.getByXPath(tabpath[i]);
    				if (null != nbElements && !nbElements.isEmpty()) {
    					htmlResult = nbElements.get(0).asText();
     
    				}
    			}
    Merci

  2. #2
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Points : 15 059
    Points
    15 059
    Par défaut
    Bonjour,

    Utilise un Set
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Set<String> urls = new HashSet<String>(Arrays.asList(tabUrl));
    		for (String url : urls){
                            try {    
                                        page = webClient.getPage(url);
    A+.

  3. #3
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    116
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2012
    Messages : 116
    Points : 158
    Points
    158
    Par défaut
    Je vois.

    Mais est ce que cela saura associé la bonne url avec le bon path?

    Si dans mon tableau en [0] j'ai url1, en [1] j'ai url2 et en [2] j'ai url1

    Avec ça, est ce qu'il ne va pas prendre en compte une fois l'url 1, ensuite l'url 2 puis à nouveau l'url 1?

    Avec ton code, on transforme le tableau en liste avec valeur unique

    on aura donc une liste url1, url2.
    Avec un tableau de path qui sera : path1 dans l'url1, path2 dans l'url2 et path3 dans l'url1.

    Je vais tester ton code, mais avec ça, je pense que, soit il chargera plusieurs fois url1, soit il ne pourra rien faire avec le 3 eme path.

    Après c'est peut etre moi qui imagine mal, à voir.

    edit : après test, ce qu'il se passe c'est que rien fait sur url1, path3.

    Donc effectivement, cela fonctionne si jamais on demande à ce que les mêmes url soient remplies l'une après l'autrre; tel url1 xpath1, url1 xpath2, url2 xpath3.

  4. #4
    Membre chevronné
    Inscrit en
    Mai 2006
    Messages
    1 364
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 1 364
    Points : 1 984
    Points
    1 984
    Par défaut
    Tu peux utiliser une map dans laquelle tu stockes les pages deja ouvertes. Un truc du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    Map<Url, ClassPage> m = new HashMapMap<Url, ClassPage>();
    for (i = 0; i < tabUrl.length; i++) {
       try {
          ClassPage page;
          if(m.containsKey(tabUrl[i]) == false)
          {
             page = webClient.getPage(tabUrl[i]);
             m.put(tabUrl[i], page);
          }
          else
          {
             page = m.get(tabUrl[i]);
          }
     
          List<HtmlElement> nbElements = (List<HtmlElement>) page.getByXPath(tabpath[i]);
          if (null != nbElements && !nbElements.isEmpty()) {
             htmlResult = nbElements.get(0).asText();
          }
    }

  5. #5
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    116
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2012
    Messages : 116
    Points : 158
    Points
    158
    Par défaut
    Merci hwoarang, ça à l'air de fonctionner.

    A ceci près que chez moi, j’ai eu quelques petites choses simples à faire, URL est a remplacé par String(mon tableau d'url contenant des string) et ClassPage remplacé par HtmlPage.

    Merci beaucoup.

  6. #6
    Membre chevronné
    Inscrit en
    Mai 2006
    Messages
    1 364
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 1 364
    Points : 1 984
    Points
    1 984
    Par défaut
    Citation Envoyé par Dynamès Voir le message
    A ceci près que chez moi, j’ai eu quelques petites choses simples à faire, URL est a remplacé par String(mon tableau d'url contenant des string) et ClassPage remplacé par HtmlPage.
    ClassPage est un nom que j'ai donné au pif ne connaissant pas le type de la variable page et Url le type que j'ai supposé d'apres le nom tabUrl

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 23
    Dernier message: 08/02/2006, 09h15
  2. [VBA-W] Executer plusieurs fois la même procédure
    Par delamarque dans le forum VBA Word
    Réponses: 3
    Dernier message: 05/12/2005, 13h39
  3. [JFrame] réafficher plusieurs fois un même panel à l'écran
    Par Monkeyget dans le forum Agents de placement/Fenêtres
    Réponses: 4
    Dernier message: 01/04/2005, 14h29
  4. SELECT plusieurs fois les mêmes champs
    Par aergil dans le forum Langage SQL
    Réponses: 2
    Dernier message: 22/02/2005, 12h10
  5. [VB.NET] Appliquer plusieurs fois la même fonction...
    Par MiJack dans le forum Windows Forms
    Réponses: 9
    Dernier message: 22/09/2004, 10h52

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo