Bonjour, je désire récupérer un string d'une page web (je prendrai pour exemple le nom des 2 clubs de football Auxerre et Saint-Etienne avec leur score respectif pour la 30ème journée). A chaque foi le code source se présente comme ceci :
Donc j'ai utiliser un pattern-matcher pour trouver le club rechercher dans le code source de la page web. En clair, si le nom du club est suivi de "nbsp" je je crée un string res1 avec les 250 caractères suivant et si le nom du club est suivi de "</a>&" je crée un string res2 avec les 250 caractères précédent.
Code : Sélectionner tout - Visualiser dans une fenêtre à part class="lien" href="/Football/FootballFicheClub479.html">Auxerre (17)</a></td><td class="score"><a href="/Football/FootballFicheMatch13520_100724.html">1-1</a></td><td class="visiteur"><a class="lien" href="/Football/FootballFicheClub13.html">Saint-Etienne</a> (16)</td><td
Par la suite je formaterai ces strings pour avoir le score et l'equipe adverse.
Le problème c'est que à chaque fois il vérifie la condition 2(le nom du club est suivi de "</a>&") et jamais la condition 1 et je n'arrive pas à comprendre pourquoi ?
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
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100 import java.io.BufferedReader; import java.io.InputStreamReader; import java.net.URL; import java.util.*; import java.util.regex.*; public class ReadURL { // Liste dans laquelle sera mémorisée la page List<String> liste = new ArrayList<String>(); /** * Charge la liste à partir de l'URL spécifiée * @param url : url de la page */ public void readURL(String url) { try { URL webURL = new URL(url); BufferedReader ligne_in = new BufferedReader(new InputStreamReader(webURL .openStream())); String ligne; while ((ligne = ligne_in.readLine()) != null) { liste.add(ligne); } ligne_in.close(); } catch (Exception e) { System.out.println(e); } } /** * * @param val : paramètre spécifiant l'action * @param liste : contient la page dans laquelle est située l'information * @return */ /** * @param val * @param liste * @return */ public String find(int val, List<String> liste) { String ligne; Pattern pn; Matcher match_n; switch (val) { case 1 : // on spécifie directement la chaine avant l'info recherchée pn = Pattern.compile("Auxerre"); for (String s : liste) { match_n = pn.matcher(s); if (match_n.find()) { int pos = match_n.end(); String res = s.substring(pos , pos+5); if (res ==" ") { String res1 = s.substring (pos, pos+250); return res1; } if (res =="</a>&") { String res2 = s.substring (pos -250, pos); return res2; } } } break; default: return null; } return null; } public static void main(String[] args) { ReadURL rUrl = new ReadURL(); rUrl.readURL("http://www.lequipe.fr/Football/FootballResultat13529.html"); System.out.println(" " + rUrl.find(1, rUrl.liste)); } }
Partager