Recuperer code source d'une page html

Résolu/Fermé
fouzou11 Messages postés 139 Date d'inscription mardi 21 juin 2011 Statut Membre Dernière intervention 4 août 2016 - Modifié par fouzou11 le 22/11/2012 à 21:47
 MCAC - 4 févr. 2015 à 16:00
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("https://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();
}
}
A voir également:

5 réponses

fouzou11 Messages postés 139 Date d'inscription mardi 21 juin 2011 Statut Membre Dernière intervention 4 août 2016 4
23 nov. 2012 à 01:38
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
KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 3 015
23 nov. 2012 à 02:05
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.
0
fouzou11 Messages postés 139 Date d'inscription mardi 21 juin 2011 Statut Membre Dernière intervention 4 août 2016 4
23 nov. 2012 à 02:10
donc voila , je veux recuperé se qui apres TAUX : dans <td> </td>
0
KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 3 015
23 nov. 2012 à 02:18
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.
0
fouzou11 Messages postés 139 Date d'inscription mardi 21 juin 2011 Statut Membre Dernière intervention 4 août 2016 4
23 nov. 2012 à 02:29
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>
0
KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 3 015
Modifié par KX le 23/11/2012 à 03:23
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
0
fouzou11 Messages postés 139 Date d'inscription mardi 21 juin 2011 Statut Membre Dernière intervention 4 août 2016 4
23 nov. 2012 à 09:59
Probleme resolu ^^ ;
merci Kx ,
est-ce que vous pouvez faire un tour ici svp https://forums.commentcamarche.net/forum/affich-26516454-soa-web-services#p26516454
1
Vitaldix Messages postés 116 Date d'inscription vendredi 9 novembre 2012 Statut Membre Dernière intervention 18 août 2013 6
Modifié par Vitaldix le 22/11/2012 à 22:06
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é
0
fouzou11 Messages postés 139 Date d'inscription mardi 21 juin 2011 Statut Membre Dernière intervention 4 août 2016 4
22 nov. 2012 à 21:57
Vitaldik en java . puisque j'ai besoin des valeur recuperés dans un traitement
0
KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 3 015
23 nov. 2012 à 01:20
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();
}
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
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
0