Recuperer code source d'une page html [Résolu/Fermé]

Signaler
Messages postés
139
Date d'inscription
mardi 21 juin 2011
Statut
Membre
Dernière intervention
4 août 2016
-
 MCAC -
Bonjour,

je veux savoir comment recuperer une partie de code source d'une page html . par example une partie d'un paragraphe ?
j'ai reussi a recuperé le code source complet mais je veux seulement quelques elements
code
import java.net.*;
import java.io.*;

public class URLConnectionReader {
public static void main(String[] args) throws Exception {
URL oracle = new URL("http://www.leSite.com/");
URLConnection yc = oracle.openConnection();
BufferedReader in = new BufferedReader(new InputStreamReader(
yc.getInputStream()));
String inputLine;
while ((inputLine = in.readLine()) != null)
System.out.println(inputLine);
in.close();
}
}

12 réponses

Messages postés
139
Date d'inscription
mardi 21 juin 2011
Statut
Membre
Dernière intervention
4 août 2016
4
Merci Kx de votre reponse ;
pour l'element je vous donne un example :
si je veux recuperé un taux (type numerique ) depuis une site web , ce taux peut se changé n'importe quel moment seulement se taux peux etre affiché dans une balise <p> ou <td> .
2
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 62553 internautes nous ont dit merci ce mois-ci

KX
Messages postés
16093
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
11 décembre 2019
2475
Les balises <p> et <td> sont n'importe où et n'importe quel ordre ? Tu veux récupérer tout ce qui est soit entre des balises <p></p> ou <td>/td> ? S'il y a un format précis, fais un copier-coller d'un exemple, car avec le Scanner on peut traiter des expressions régulières aussi, mais il faut la faire bien.
fouzou11
Messages postés
139
Date d'inscription
mardi 21 juin 2011
Statut
Membre
Dernière intervention
4 août 2016
4
donc voila , je veux recuperé se qui apres TAUX : dans <td> </td>
KX
Messages postés
16093
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
11 décembre 2019
2475
Est-ce que tu peux donner un exemple de code HTML qui correspond à ton site, parce que là ce n'est pas super précis, or il faut être super rigoureux avec les regexp.
fouzou11
Messages postés
139
Date d'inscription
mardi 21 juin 2011
Statut
Membre
Dernière intervention
4 août 2016
4
ok par example dans cette page que nous parlons dedans il y une partie de la source comme ca :
<div id="searchOpt" class="searchOptions">
<span id="fs_optclose"><a href="#" class="floatRight marT5 ftUnderline" onclick="$('searchOpt').style.display='none';return false;">Fermer</a></span>
<input id="fs_opt_kw" class="radio" value="" name="mode" type="radio" checked="checked">
<label for="fs_opt_kw">Recherche par mot-clé</label>
<input id="fs_opt_u" class="radio" value="u" name="mode" type="radio">
<label for="fs_opt_u">Recherche par nom d'utilisateur</label>
<br/><br/><input id="fs_opt_na" value="pending" name="opt" type="checkbox">
<label for="fs_opt_na">Messages sans réponse</label>
<input id="fs_opt_solved" value="solved" name="opt" type="checkbox">
<label for="fs_opt_na">Questions résolues</label>
</div>

si je veu par example recuperé les chaine de caractere apres les mot rechercher dans <label for="fs_opt_u">Recherche par nom d'utilisateur</label>
KX
Messages postés
16093
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
11 décembre 2019
2475
Il faudrait bien sûr tester ce que ça donne sur ton site :

public static void lireSite(String url) throws MalformedURLException, IOException
{
    String regex = "\\<label for=\"([^\\\"]*)\"\\>([^\\<]*)\\</label\\>";
    
    Scanner sc = new Scanner(new URL(url).openStream());
    
    while (sc.hasNextLine())
    {
        String line = sc.nextLine();
        if (line.matches(regex))
        {
            Scanner sc2 = new Scanner(line);
            sc2.findInLine(regex);
            
            MatchResult result = sc2.match();
            System.out.printf("%s\t%s\n",result.group(1),result.group(2));
            sc2.close();
        }
    }
    sc.close();
}

Avec ton exemple ça m'affiche ceci :

fs_opt_kw	Recherche par mot-clé 
fs_opt_u	Recherche par nom d'utilisateur 
fs_opt_na	Messages sans réponse 
fs_opt_na	Questions résolues
Messages postés
139
Date d'inscription
mardi 21 juin 2011
Statut
Membre
Dernière intervention
4 août 2016
4
Probleme resolu ^^ ;
merci Kx ,
est-ce que vous pouvez faire un tour ici svp http://www.commentcamarche.net/forum/affich-26516454-soa-web-services#p26516454
Messages postés
116
Date d'inscription
vendredi 9 novembre 2012
Statut
Membre
Dernière intervention
18 août 2013
6
Clic droit n'importe où sur la page (sauf un lien) puis code source de la page, non ?

édit : t'as fait ta modification en même temps que j'ai envoyé mon message donc pas vu, désolé
fouzou11
Messages postés
139
Date d'inscription
mardi 21 juin 2011
Statut
Membre
Dernière intervention
4 août 2016
4
Vitaldik en java . puisque j'ai besoin des valeur recuperés dans un traitement
Messages postés
16093
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
11 décembre 2019
2475
Il faudrait être un peu plus précis sur les "éléments" que tu souhaites récupérer.

Au passage, je te montre comment réécrire ton code plus simplement grâce à Scanner :

public static void lireSite(String url) throws MalformedURLException, IOException
{
    Scanner sc = new Scanner(new URL(url).openStream());
    while (sc.hasNextLine())
        System.out.println(sc.nextLine());
    sc.close();
}
Bonjour KX, j'ai un projet où j'ai besoin de récuperer, dans le meme genre, des informations précise à partir du code source d'une page html. J'ai éssayé votre code, mais je rencontre un problème au suejt de la classe URL.
Merci