si c'est pas propre et que ça marche ça me va.
mais j'ai mis tout un peu a l'arrache et j'ai des erreurs :s
tu peux me mettre le code en entier avec tes rajouts stp ? si c'est pas trop te demander
si c'est pas propre et que ça marche ça me va.
mais j'ai mis tout un peu a l'arrache et j'ai des erreurs :s
tu peux me mettre le code en entier avec tes rajouts stp ? si c'est pas trop te demander
dis moi si ça marche..
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 import java.util.ArrayList; import java.util.List; /** * 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 { private List<String> visitedURL = new ArrayList(); public static void main(String[] args) { collectURL("http://www.bde-ges.com"); } private 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)&&(!this.visitedURL.contains(link)) { // ajout des liens trouvés à la List System.out.println(link); this.visitedURL.add(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); } } }
Il vaut mieux utiliser un HashSet.
1. Ça garantira l'unicité.
2. Ça sera nettement plus performant au parcours ; et sur le web, le nombre d'url va rapidement être énorme, c'est donc sensible.
des erreurs sur les deux "this"
=> cannot use this in a static context
j'ai retiré les this et mis en static, ça fonctionne niquel !!!!
Merci !!
voici mon code :
simple question tu saurais faire pour récupérer aussi sur l'URL en question les emails et les mots clé ?
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 import java.io.IOException; import java.io.InputStreamReader; import java.net.URL; import java.io.Reader; import java.net.URLConnection; import java.util.ArrayList; import java.util.List; 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 robot { private static List<String> visitedURL = new ArrayList(); public static void main(String[] args) { collectURL("http://www.bde-ges.com"); } private static void collectURL(String myurl){ try { // Chargement de la page URL url = new URL(myurl); URLConnection uconnection = url.openConnection(); Reader rd = new InputStreamReader(uconnection.getInputStream()); // Lecture du 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)&& !(visitedURL.contains(link))){ // ajout des liens trouvés à la List System.out.println(link); visitedURL.add(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); } } }
c'est un exercice d'école en faite.
je dois print (comme j'ai fait avec les url) tous les mails que je rencontre, et tout les mots clé que je rencontre dans les divers URL.
je dois simplement les récupérer betement sans les classé et savoir d'ou il viennent.
je pense que pour les mails c'est : [a-z0-9._-]+@[a-z0-9._-]{2,}\\.[a-z]{2,4}
et pour les mots clé : meta keywords
mais j'ai aucune idée comment les récupérers.
Tu saurais m'aider stp encore ?
voici mon 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 import java.io.IOException; import java.io.InputStreamReader; import java.io.PrintWriter; import java.net.URL; import java.io.Reader; import java.net.URLConnection; import java.util.ArrayList; import java.util.List; 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 robot { private static List<String> visitedURL = new ArrayList(); public static void main(String[] args) { collectURL("http://www.bde-ges.com"); } private static void collectURL(String myurl){ try { // Chargement de la page URL url = new URL(myurl); URLConnection uconnection = url.openConnection(); Reader rd = new InputStreamReader(uconnection.getInputStream()); // Lecture du 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)&& !(visitedURL.contains(link))){ // ajout des liens trouvés à la List System.out.println(link); ecrire("C:/Users/log.txt", link); visitedURL.add(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); } } }
désolé, je ne m'y connais pas assez. Je t'ai juste aidé pour la récurence le reste c'est toi qui me l'a appris ^^
ok merci je fais un nouveau post
encore merci pour tout
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager