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

Langage Java Discussion :

Programme a mettre dans une boucle


Sujet :

Langage Java

  1. #1
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2009
    Messages
    236
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2009
    Messages : 236
    Points : 110
    Points
    110
    Par défaut Programme a mettre dans une boucle
    Bonjour,

    Mon programme me renvoi tout les URL du site mis en paramètre.

    Je voudrais mettre mon programme dans une boucle, afin qu'il me liste toutes les URL du site en paramètre, puis qu'il reface le traitement pour chacun des sites trouvé, etc...

    Voici mon programme :

    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.io.Reader;
    import java.net.URL;
    import java.net.URLConnection;
    import java.util.logging.Level;
    import java.util.logging.Logger;
    import javax.swing.text.BadLocationException;
    import javax.swing.text.EditorKit;
    import javax.swing.text.SimpleAttributeSet;
    import javax.swing.text.html.HTML;
    import javax.swing.text.html.HTMLDocument;
    import javax.swing.text.html.HTMLEditorKit;
     
     
    public class LinkExtract {
     
        public static void main(String[] args) {
            try {
                // Pour charger la page
                URL url = new URL("http://www.bde-ges.com");
                URLConnection uconnection = url.openConnection();
                Reader rd = new InputStreamReader(uconnection.getInputStream());
                // On lit le document
                EditorKit kit = new HTMLEditorKit();
                HTMLDocument doc = (HTMLDocument) kit.createDefaultDocument();
                doc.putProperty("IgnoreCharsetDirective", new Boolean(true));
                kit.read(rd, doc, 0);
                // Parcour des balises de lien
                HTMLDocument.Iterator it = doc.getIterator(HTML.Tag.A);
                while (it.isValid()) {
                    SimpleAttributeSet s = (SimpleAttributeSet) it.getAttributes();
                    String link = (String) s.getAttribute(HTML.Attribute.HREF);
                    if (link != null) {
                        // Affichage des liens trouvé
                        System.out.println(link);
                    }
                    it.next();
                }
            } catch (BadLocationException ex) {
                Logger.getLogger(LinkExtract.class.getName()).log(Level.SEVERE, null, ex);
            } catch (IOException ex) {
                Logger.getLogger(LinkExtract.class.getName()).log(Level.SEVERE, null, ex);
            }
        }
    }
    Comment faire svp ?

    Merci d'avance.

  2. #2
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2011
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2011
    Messages : 28
    Points : 32
    Points
    32
    Par défaut
    Salut, je ne suis pas sur d'avoir compris mais je te propose de :
    -mettre tout ton code dans une nouvelle méthode qui renvoie une list de String;
    -remplacer ton System.out.println(link) par un taList.add(link);
    -et dans ton main tu pourra faire ta boucle sur la liste retourné.

    Ca répond à la question?

  3. #3
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2009
    Messages
    236
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2009
    Messages : 236
    Points : 110
    Points
    110
    Par défaut
    salut,

    merci pour ta réponse rapide.

    Oui c'est exacte.

    Peux tu m'aider stp ?

    J'ai vraiment du mal en java, je débute.. :s

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2011
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2011
    Messages : 28
    Points : 32
    Points
    32
    Par défaut
    Si je reprend ton code, ça devrai faire (si je ne me trompe pas :p)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
     
        public static void main(String[] args) {
             List urlList = new List();
             urlList = collectURL();
             For(String url : urlList)
             {
              //ton traitement sur les URL
              }
         }
    Et pour ta méthode que j'ai appelé collectURL :
    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
     
    private List<String>collectURL(){
    List urlList =new List();
     try {
                // Pour charger la page
                URL url = new URL("http://www.bde-ges.com");
                URLConnection uconnection = url.openConnection();
                Reader rd = new InputStreamReader(uconnection.getInputStream());
                // On lit le document
                EditorKit kit = new HTMLEditorKit();
                HTMLDocument doc = (HTMLDocument) kit.createDefaultDocument();
                doc.putProperty("IgnoreCharsetDirective", new Boolean(true));
                kit.read(rd, doc, 0);
                // Parcour des balises de lien
                HTMLDocument.Iterator it = doc.getIterator(HTML.Tag.A);
                while (it.isValid()) {
                    SimpleAttributeSet s = (SimpleAttributeSet) it.getAttributes();
                    String link = (String) s.getAttribute(HTML.Attribute.HREF);
                    if (link != null) {
                        // ajout des liens trouvés à la List
                        urlList.add(link);
                    }
                    it.next();
                }
            } catch (BadLocationException ex) {
                Logger.getLogger(LinkExtract.class.getName()).log(Level.SEVERE, null, ex);
            } catch (IOException ex) {
                Logger.getLogger(LinkExtract.class.getName()).log(Level.SEVERE, null, ex);
    return urlList;
            }
    }
    Je crois que ça doit être ça a peut pret.. j'ai supprimé les imports pour gagner de la place.

  5. #5
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2009
    Messages
    236
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2009
    Messages : 236
    Points : 110
    Points
    110
    Par défaut
    merci je te suis bien sur la méthode collectURL

    mais dans le main tu as écris //ton traitement sur les URL
    c'est a dire ?
    que dois je mettre dedans ?

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2011
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2011
    Messages : 28
    Points : 32
    Points
    32
    Par défaut
    Citation Envoyé par oliviernouhi Voir le message
    merci je te suis bien sur la méthode collectURL

    mais dans le main tu as écris //ton traitement sur les URL
    c'est a dire ?
    que dois je mettre dedans ?
    A toi de voir, tu voulais faire une boucle sur tes url non?
    Reexplique le but de boucler sur les url stp ^^

  7. #7
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2009
    Messages
    236
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2009
    Messages : 236
    Points : 110
    Points
    110
    Par défaut
    Je voudrais juste afficher toutes les url trouver pour le moment.

    comment faire ?

  8. #8
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2011
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2011
    Messages : 28
    Points : 32
    Points
    32
    Par défaut
    Ba ton premier code les affichait déjà non?
    Ton problème est peut petre plus pour trouver les url que pour les afficher?

  9. #9
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2009
    Messages
    236
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2009
    Messages : 236
    Points : 110
    Points
    110
    Par défaut
    Voila le code actuel que j'ai

    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    import java.awt.List;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.io.Reader;
    import java.net.URL;
    import java.net.URLConnection;
    import java.util.logging.Level;
    import java.util.logging.Logger;
    import javax.swing.text.BadLocationException;
    import javax.swing.text.EditorKit;
    import javax.swing.text.SimpleAttributeSet;
    import javax.swing.text.html.HTML;
    import javax.swing.text.html.HTMLDocument;
    import javax.swing.text.html.HTMLEditorKit;
     
    /**
     * Réaliser un robot qui récupère des emails sur internet et y associe les mots clés de la page
     *  - le robot doit extraire lees URL qu'il trouve et parcourir chacune d'elle
     *  - le robot doit extraire les mots clés ainsi que les emails et les stocker en BDD
     *  
     */
    public class robot {
     
    	public static void main(String[] args) {
            List urlList = new List();
            urlList = collectURL();
            For(String url : urlList)
            {
             // traitement sur les URL
             }
        }
     
        private List<String>collectURL(){
        	List urlList =new List();
        	 try {
                // Pour charger la page
                URL url = new URL("http://www.bde-ges.com");
                URLConnection uconnection = url.openConnection();
                Reader rd = new InputStreamReader(uconnection.getInputStream());
                // On lit le document
                EditorKit kit = new HTMLEditorKit();
                HTMLDocument doc = (HTMLDocument) kit.createDefaultDocument();
                doc.putProperty("IgnoreCharsetDirective", new Boolean(true));
                kit.read(rd, doc, 0);
                // Parcour des balises de lien
                HTMLDocument.Iterator it = doc.getIterator(HTML.Tag.A);
                while (it.isValid()) {
                    SimpleAttributeSet s = (SimpleAttributeSet) it.getAttributes();
                    String link = (String) s.getAttribute(HTML.Attribute.HREF);
                    if (link != null) {
                        // ajout des liens trouvés à ma List
                        urlList.add(link);
                    }
                    it.next();
                }
            } catch (BadLocationException ex) {
                Logger.getLogger(robot.class.getName()).log(Level.SEVERE, null, ex);
            } catch (IOException ex) {
                Logger.getLogger(robot.class.getName()).log(Level.SEVERE, null, ex);
        	return urlList;
        	}
        }
    }
    Je pars d'une URL de base, mais après celle ci doit changer par celles trouver.
    1ère url trouver => je vais avoir X résultats et après il faut relancer ce traitement sur les X resultats et ainsi de suite. Cela va faire une énorme araignée

    Avec le code au dessus, qu'est ce que je dois rajouter pour que ça marche ?

    Mon ancien traitement sur les URL c'était :

    // Affichage des liens trouvés
    System.out.println(link);

    du coup comment afficher la list ?

    ps : j'ai aussi des erreurs, le compilateur aime pas trop " private List<String>collectURL(){ " et le " For(String url : urlList) "

  10. #10
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2011
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2011
    Messages : 28
    Points : 32
    Points
    32
    Par défaut
    Ok, en gros tu veux parcourir l'arborescence du site. Je te conseille de découper ton code en plusieurs méthodes pour gagner en lisibilité.
    Réfléchis sans penser en java, juste en pensant algorithmique (ça fait lgt pour moi :p) :

    Tu as une fonction qui lance la première recherche, elle prend une url et en retourne plusieurs;
    Elle est relancé pour chaque nouvelles url;
    On arrete le processus quand il n'y a plus d'url.

    Donc en rechangeant ton code ça fait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
     public static void main(String[] args) {
            collectURL("http://www.bde-ges.com");
     
         }
    et
    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    private void collectURL(String urlString){
     try {
                // Pour charger la page
                URL url = new URL(urlString);
                URLConnection uconnection = url.openConnection();
                Reader rd = new InputStreamReader(uconnection.getInputStream());
                // On lit le document
                EditorKit kit = new HTMLEditorKit();
                HTMLDocument doc = (HTMLDocument) kit.createDefaultDocument();
                doc.putProperty("IgnoreCharsetDirective", new Boolean(true));
                kit.read(rd, doc, 0);
                // Parcour des balises de lien
                HTMLDocument.Iterator it = doc.getIterator(HTML.Tag.A);
                while (it.isValid()) {
                    SimpleAttributeSet s = (SimpleAttributeSet) it.getAttributes();
                    String link = (String) s.getAttribute(HTML.Attribute.HREF);
                    if (link != null) {
                        // ajout des liens trouvés à la List
                    	System.out.println(link);
                    	collecURL(link);
                    }
                    it.next();
                }
            } catch (BadLocationException ex) {
                Logger.getLogger(LinkExtract.class.getName()).log(Level.SEVERE, null, ex);
            } catch (IOException ex) {
                Logger.getLogger(LinkExtract.class.getName()).log(Level.SEVERE, null, ex);
            }
    }
    Il y a ptet un problème avec la condition d'arret, j'ai un peu de mal ce matin

  11. #11
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2009
    Messages
    236
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2009
    Messages : 236
    Points : 110
    Points
    110
    Par défaut
    ok merci super mais ça marche pas :s

    il me met des erreurs sur :

    URL url = new URL(url);
    il me dit : change type of 'url' to String

    et

    return urlList;
    il me dit : change method return type to 'List '

    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    import java.awt.List;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.io.Reader;
    import java.net.URL;
    import java.net.URLConnection;
    import java.util.logging.Level;
    import java.util.logging.Logger;
    import javax.swing.text.BadLocationException;
    import javax.swing.text.EditorKit;
    import javax.swing.text.SimpleAttributeSet;
    import javax.swing.text.html.HTML;
    import javax.swing.text.html.HTMLDocument;
    import javax.swing.text.html.HTMLEditorKit;
     
    /**
     * Réaliser un robot qui récupère des emails sur internet et y associe les mots clés de la page
     *  - le robot doit extraire lees URL qu'il trouve et parcourir chacune d'elle
     *  - le robot doit extraire les mots clés ainsi que les emails et les stocker en BDD
     *  
     */
    public class robot {
     
    	 public static void main(String[] args) {
    	        collectURL("http://www.bde-ges.com");
    	 }
     
    	 private static void collectURL(String url){
    		 List urlList =new List();
    		  try {
                 // Pour charger la page
                 URL url = new URL(url);
                 URLConnection uconnection = url.openConnection();
                 Reader rd = new InputStreamReader(uconnection.getInputStream());
                 // On lit le document
                 EditorKit kit = new HTMLEditorKit();
                 HTMLDocument doc = (HTMLDocument) kit.createDefaultDocument();
                 doc.putProperty("IgnoreCharsetDirective", new Boolean(true));
                 kit.read(rd, doc, 0);
                 // Parcour des balises de lien
                 HTMLDocument.Iterator it = doc.getIterator(HTML.Tag.A);
                 while (it.isValid()) {
                     SimpleAttributeSet s = (SimpleAttributeSet) it.getAttributes();
                     String link = (String) s.getAttribute(HTML.Attribute.HREF);
                     if (link != null) {
                         // ajout des liens trouvés à la List
                     	System.out.println(link);
                     	collectURL(link);
                     }
                     it.next();
                 }
    		 } catch (BadLocationException ex) {
                 Logger.getLogger(robot.class.getName()).log(Level.SEVERE, null, ex);
             } catch (IOException ex) {
                 Logger.getLogger(robot.class.getName()).log(Level.SEVERE, null, ex);
    		 return urlList;
    		 }
    	 }
    }
    que faire ? si tu le met dans Eclipse le erreurs apparaissent

  12. #12
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2011
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2011
    Messages : 28
    Points : 32
    Points
    32
    Par défaut
    OUps, change le nom de la ton paramettre dans la méthode collectURL, sinon tu as deux variables avec le même nom.
    Et il faut retirer le return du collectURL vu que maintenant c'est un void.
    (J'ai édité mon code au dessus avec les changements)

  13. #13
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2009
    Messages
    236
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2009
    Messages : 236
    Points : 110
    Points
    110
    Par défaut
    ok c'est fait mais j'ai toujours deux erreurs que je n'arrive pas à resoudre.. :s

    voici le code actuel :

    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    import java.awt.List;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.io.Reader;
    import java.net.URL;
    import java.net.URLConnection;
    import java.util.logging.Level;
    import java.util.logging.Logger;
    import javax.swing.text.BadLocationException;
    import javax.swing.text.EditorKit;
    import javax.swing.text.SimpleAttributeSet;
    import javax.swing.text.html.HTML;
    import javax.swing.text.html.HTMLDocument;
    import javax.swing.text.html.HTMLEditorKit;
     
    /**
     * Réaliser un robot qui récupère des emails sur internet et y associe les mots clés de la page
     *  - le robot doit extraire lees URL qu'il trouve et parcourir chacune d'elle
     *  - le robot doit extraire les mots clés ainsi que les emails et les stocker en BDD
     *  
     */
    public class robot {
     
    	 public static void main(String[] args) {
    	        collectURL("http://www.bde-ges.com");
    	 }
     
    	 private static void collectURL(String myurl){
    		 List urlList =new List();
    		  try {
                 // Pour charger la page
                 URL url = new URL(url);
                 URLConnection uconnection = url.openConnection();
                 Reader rd = new InputStreamReader(uconnection.getInputStream());
                 // On lit le document
                 EditorKit kit = new HTMLEditorKit();
                 HTMLDocument doc = (HTMLDocument) kit.createDefaultDocument();
                 doc.putProperty("IgnoreCharsetDirective", new Boolean(true));
                 kit.read(rd, doc, 0);
                 // Parcour des balises de lien
                 HTMLDocument.Iterator it = doc.getIterator(HTML.Tag.A);
                 while (it.isValid()) {
                     SimpleAttributeSet s = (SimpleAttributeSet) it.getAttributes();
                     String link = (String) s.getAttribute(HTML.Attribute.HREF);
                     if (link != null) {
                         // ajout des liens trouvés à la List
                     	System.out.println(link);
                     	collectURL(link);
                     }
                     it.next();
                 }
    		 } catch (BadLocationException ex) {
                 Logger.getLogger(robot.class.getName()).log(Level.SEVERE, null, ex);
             } catch (IOException ex) {
                 Logger.getLogger(robot.class.getName()).log(Level.SEVERE, null, ex);
    		 return urlList;
    		 }
    	 }
    }
    pourrais tu m'aider pour la correction stp ?

  14. #14
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2011
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2011
    Messages : 28
    Points : 32
    Points
    32
    Par défaut
    retire le return à la fin et la déclaration de la list au début.
    et fais le changement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
      URL url = new URL(url);
    en
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
      URL url = new URL(myurl);

  15. #15
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2009
    Messages
    236
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2009
    Messages : 236
    Points : 110
    Points
    110
    Par défaut
    ok c'est bon.

    voici le code :

    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    import java.awt.List;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.io.Reader;
    import java.net.URL;
    import java.net.URLConnection;
    import java.util.logging.Level;
    import java.util.logging.Logger;
    import javax.swing.text.BadLocationException;
    import javax.swing.text.EditorKit;
    import javax.swing.text.SimpleAttributeSet;
    import javax.swing.text.html.HTML;
    import javax.swing.text.html.HTMLDocument;
    import javax.swing.text.html.HTMLEditorKit;
     
    /**
     * Réaliser un robot qui récupère des emails sur internet et y associe les mots clés de la page
     *  - le robot doit extraire lees URL qu'il trouve et parcourir chacune d'elle
     *  - le robot doit extraire les mots clés ainsi que les emails et les stocker en BDD
     *  
     */
    public class robot {
     
    	 public static void main(String[] args) {
    	        collectURL("http://www.bde-ges.com");
    	 }
     
    	 private static void collectURL(String myurl){
    		  try {
                 // Pour charger la page
                 URL url = new URL(myurl);
                 URLConnection uconnection = url.openConnection();
                 Reader rd = new InputStreamReader(uconnection.getInputStream());
                 // On lit le document
                 EditorKit kit = new HTMLEditorKit();
                 HTMLDocument doc = (HTMLDocument) kit.createDefaultDocument();
                 doc.putProperty("IgnoreCharsetDirective", new Boolean(true));
                 kit.read(rd, doc, 0);
                 // Parcour des balises de lien
                 HTMLDocument.Iterator it = doc.getIterator(HTML.Tag.A);
                 while (it.isValid()) {
                     SimpleAttributeSet s = (SimpleAttributeSet) it.getAttributes();
                     String link = (String) s.getAttribute(HTML.Attribute.HREF);
                     if (link != null) {
                         // ajout des liens trouvés à la List
                     	System.out.println(link);
                     	collectURL(link);
                     }
                     it.next();
                 }
    		 } catch (BadLocationException ex) {
                 Logger.getLogger(robot.class.getName()).log(Level.SEVERE, null, ex);
             } catch (IOException ex) {
                 Logger.getLogger(robot.class.getName()).log(Level.SEVERE, null, ex);
    		 }
    	 }
    }
    mais j'ai l'impression que je programme tourne en rond et reste sur la meme adresse.

    tu as une idée?

  16. #16
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2011
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2011
    Messages : 28
    Points : 32
    Points
    32
    Par défaut
    Citation Envoyé par nretrain Voir le message
    et fais le changement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
      URL url = new URL(url);
    en
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
      URL url = new URL(myurl);
    Tu as fait ça?

  17. #17
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2009
    Messages
    236
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2009
    Messages : 236
    Points : 110
    Points
    110
    Par défaut
    oui mais ça tourne en rond toujours

  18. #18
    Membre chevronné
    Inscrit en
    Août 2009
    Messages
    1 073
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 1 073
    Points : 1 806
    Points
    1 806
    Par défaut
    Citation Envoyé par oliviernouhi Voir le message
    mais j'ai l'impression que je programme tourne en rond et reste sur la meme adresse.

    tu as une idée?
    Normal : quant tu trouves un lien, tu fais immédiatement un appel récursif à collectUrl.
    Or il y a bien des chances que le site se référence lui-même (et donc tu peux tomber dans une boucle page1 -> page2 -> page1, voire même pour un HREF=# avoir du page1->page1 ...) ! Je te conseille donc de :
    1. Avant d'aller collecter les URL d'un site, vérifier que tu ne l'as pas déjà visité.
    2. Pour avoir une progression "en toile", faire la liste de tous les liens d'un site avant d'aller au niveau suivant.

  19. #19
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2009
    Messages
    236
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2009
    Messages : 236
    Points : 110
    Points
    110
    Par défaut
    ok merci, comment faire svp en java ?
    je suis vraiment débutant en java..
    j'ai vraiment besoin de vous..

  20. #20
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2011
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2011
    Messages : 28
    Points : 32
    Points
    32
    Par défaut
    Je ne sais pas si c'est très propre mais je te propose :
    avant le main
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    private List<String> visitedURL
    dans le main avant d'appeler collectURL tu initialises ta list
    et dans ta méthode, dans le if tu rajoutes la condition :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     if ((link != null)&&(!this.visitedURL.contains(link)) {
    puis dans les instructions du if :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    this.visitedURL.add(link);
    J'ose pas me relire..

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [Débutant] Faire appel à un programme plusieurs fois dans une boucle for
    Par hibouchka dans le forum MATLAB
    Réponses: 9
    Dernier message: 01/03/2011, 17h09
  2. Mettre un timeout dans une boucle
    Par yann123456 dans le forum Langage
    Réponses: 0
    Dernier message: 27/07/2010, 16h11
  3. comment mettre un tableau dans une boucle et sur la meme page
    Par pikkolina dans le forum Général JavaScript
    Réponses: 12
    Dernier message: 24/05/2009, 19h21
  4. Réponses: 12
    Dernier message: 17/10/2008, 10h45
  5. Mettre une tempo dans une boucle
    Par lilyla dans le forum MATLAB
    Réponses: 2
    Dernier message: 12/02/2007, 17h04

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