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

avec Java Discussion :

Rechercher un terme dans un code source HTML


Sujet :

avec Java

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2009
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 17
    Points : 16
    Points
    16
    Par défaut Rechercher un terme dans un code source HTML
    Bonjour à tous... premier post ici, alors que ça fait des lustres que je lis votre doc....

    Je suis un développeur totalement novice (du coup, je ne sais pas si le terme développeur est valable pour moi lol...). Bon, trève de bavardage, les choses sérieuses...

    Je cherche à récupérer le code source d'une page web... jusque là tout va bien avec la classe URL...

    Ensuite je veux chercher une chaine de caractère et récupérer le reste de la ligne de code qui suit, comme on pourrait le faire dans un texte normal...
    J'arrive déjà à afficher le code source dans la console, mais je coince pour faire ma recherche dans le code....
    Donc voilà mon problème...

    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
     
     
        public ArrayList<String> LireUrl(String Visite)      {
     
                ArrayList<String> urlLigne = new ArrayList<String>();
                int nbrLigne;
     
                try{
                URL url = new URL(Visite);
                URLConnection connection = url.openConnection();
                BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream()));
                String ligne;
                int Cpt=0;
                while ((ligne = reader.readLine()) != null)
                {
                urlLigne.add(ligne);
                System.out.println(ligne);
                Cpt++;
                }
                reader.close();
                nbrLigne = Cpt++;
                      return urlLigne;
                }
                catch (Exception e){
                      System.out.println(e);
                }
                return urlLigne;
          }
    Merci d'avance à tous pour le coup de main....

  2. #2
    Membre régulier Avatar de NutellaPiou
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    107
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 107
    Points : 82
    Points
    82
    Par défaut
    La chaîne de caractères que tu recherches, elle peut être n'importe où dans la ligne?

    Parce qu'on peut utiliser 3 méthodes différentes :

    • startsWith(String prefix)
    • contains(CharSequence s)
    • endsWith(String suffix)


    Si tu ne sais pas où se trouve la chaîne de caractères dans ta ligne, faut utiliser contains :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if(ligne.contains("tachaine"))
          //traitements
    L'api

    Une fois la ligne trouvée, il faut faire un substring à partir de l'endroit désiré

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    public class Test
    {
        public static void main(String[] args)
        {
            String machaine = "bienvenueatous";
            String recherche = "venue";
            if(machaine.contains(recherche))
            {
                int index = machaine.indexOf(recherche);
                System.out.println(machaine.substring(index + recherche.length()));
            }
        }
    }
    Code Résultat : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    run:
    atous
    BUILD SUCCESSFUL (total time: 0 seconds)

    Je pense qu'il y a moyen de faire plus rapide dans le if, si jamais je trouve, j'édit.
    -> Mac Powa !
    -> A quoi sert IE? A télécharger Firefox !

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2009
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 17
    Points : 16
    Points
    16
    Par défaut
    Merci beaucoup pour la réponse...
    Je vais jeter un coup d'oeil à tout ça cet après midi...

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2009
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 17
    Points : 16
    Points
    16
    Par défaut
    Salut, encore moi

    Bon, le code fonctionne pour ce que je veux faire...
    par contre, lorsque je recherche un second terme dans les lignes qui suivent, il ne me retourne rien... et je ne vois pas où est le problème dans 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
        public ArrayList<String> LireUrl(String Visite)      {
     
                ArrayList<String> urlLigne = new ArrayList<String>();
                int nbrLigne;
                String faiName = "netname";
                String faiCountry = "country";
                String recherche = ":";
     
                try{
                URL url = new URL(Visite);
                URLConnection connection = url.openConnection();
                BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream()));
                String ligne;
                int Cpt=0;
                while ((ligne = reader.readLine()) != null)
                {
                if (ligne.contains(faiName)){
                       int index = ligne.indexOf(recherche);
                jtfNom.setText(ligne.substring(index + recherche.length()));
     
                if (ligne.contains(faiCountry)){
                    int index2 = ligne.indexOf(recherche);
                jtfPays.setText(ligne.substring(index2 + recherche.length()));
     
                }
     
                }
                urlLigne.add(ligne);
                System.out.println(ligne);
                Cpt++;
                }
                reader.close();
                nbrLigne = Cpt++;
                      return urlLigne;
                }
                catch (Exception e){
                      System.out.println(e);
                }
                return urlLigne;
          }

  5. #5
    Membre éprouvé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    764
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 764
    Points : 909
    Points
    909
    Par défaut
    Je reprends ton 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
    if (ligne.contains(faiName)){ // si la ligne contient "netname"...
     
       int index = ligne.indexOf(recherche);
       // alors chercher la chaîne ":"
       jtfNom.setText(ligne.substring(index + recherche.length()));
       // et récupérer ":"
     
       if (ligne.contains(faiCountry)){ // si en plus la ligne contient "country"...
          int index2 = ligne.indexOf(recherche);
          // alors chercher ":"
          jtfPays.setText(ligne.substring(index2 + recherche.length()));
          // et récupérer ":"
       }
    }
    Il y a effectivement un problème

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2009
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 17
    Points : 16
    Points
    16
    Par défaut
    En fait, je sais deux choses :
    Les chaines que je recherche pour servir de "marqueur" à savoir :
    String faiName = "netname";
    String faiCountry = "country";
    se trouvent toujours en début de ligne.

    Il n'y a jamais deux "marqueurs" sur la même ligne...

    Pour info, je vais la recherche sur une page générée par Samspade.org, lorsqu'on identifie le propriétaire d'une adresse IP.... je veux récupérer le nom du FAI et le pays

  7. #7
    Membre régulier Avatar de NutellaPiou
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    107
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 107
    Points : 82
    Points
    82
    Par défaut
    Citation Envoyé par Jerome.Ecare Voir le message
    se trouvent toujours en début de ligne.
    Donc tu peux utiliser la méthode startsWith() plutôt que contains() enfin bon c'est un détail.

    Il n'y a jamais deux "marqueurs" sur la même ligne...
    Ton if est mal placé alors.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    if (ligne.contains(faiName))
    {
          int index = ligne.indexOf(recherche);
          jtfNom.setText(ligne.substring(index + recherche.length()));
    }
    else
    {
         if (ligne.contains(faiCountry))
         {
              int index2 = ligne.indexOf(recherche);
              jtfPays.setText(ligne.substring(index2 + recherche.length()));
          }
    }
    Essaies ça.
    -> Mac Powa !
    -> A quoi sert IE? A télécharger Firefox !

  8. #8
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 311
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 311
    Points : 9 526
    Points
    9 526
    Billets dans le blog
    1
    Par défaut
    Tu pourrais utiliser un parser HTML, comme celui-là...

    A+
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2009
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 17
    Points : 16
    Points
    16
    Par défaut
    Essaies ça.
    Houlà.... après une pause, je viens de relire mon code... Va vraiment falloir que j'arrête .....

    Tu pourrais utiliser un parser HTML, comme celui-là...
    Oui, j'ai vu ce parseur, mais mon code doit être intégré dans un logiciel pro (normalement, je suis plus fonctionnel que programmeur...) et je ne veux pas alourdir la chose (déjà bien volumiseuse) en ajoutant des paquets supplémentaires... au pire, si le HTML que je récupère est vraiment trop pourri, j'en passerai pas là....


    Vous êtes vraiment sympas de me répondre que je vois les c..... que j'écris...

    Encore ... et je pense que d'autres questions suivront... mais pas aujourd'hui lol

    ----- Edit -----
    Merci à tous pour les réponses... ça fonctionne en l'état avec la modif du if... else...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Sed - Récupération de values dans un code source HTML
    Par Kaldyris dans le forum Shell et commandes GNU
    Réponses: 8
    Dernier message: 03/06/2013, 00h48
  2. Réponses: 11
    Dernier message: 29/05/2011, 11h55
  3. Affichage de code source html dans une de mes pages
    Par tchern dans le forum Websphere
    Réponses: 2
    Dernier message: 06/03/2009, 15h47
  4. Réponses: 2
    Dernier message: 27/10/2008, 13h50
  5. [Tableaux] stocker code source html dans variable php
    Par vonwolf dans le forum Langage
    Réponses: 5
    Dernier message: 12/12/2007, 22h40

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