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

C# Discussion :

HtmlAgilityPack problème de code [Débutant]


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Webmaster
    Inscrit en
    Juin 2013
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Juin 2013
    Messages : 12
    Par défaut HtmlAgilityPack problème de code
    Bonjour,

    je cherche à récupérer le dernier tirage du kéno sur un listView par l'intermédiaire de HtmlAgility. Mon problème c'est que par le fait que j'appelle les balise <p> je me retrouve avec 40 numéros soit les deux tirages du jour au lieu de 20 que je voudrais et là je bloque complètement. Il serais sympa de me donner une piste pour limiter le foreach à 20 lignes. voir mon 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
    string url = "https://www.fdj.fr/jeux/jeux-de-tirage/keno/resultats";
                HtmlWeb web = new HtmlWeb();
                HtmlAgilityPack.HtmlDocument doc = web.Load(url);
     
                var ensemble = (from node in doc.DocumentNode.Descendants("p")
                                where node.Attributes.Contains("class")
                                where node.Attributes["class"].Value == "keno_num"
                                select node);
     
                foreach (HtmlAgilityPack.HtmlNode p in ensemble)
                {
     
                    relever_numeros.Items.Add("" + p.InnerText);
     
                }
    Merci par avance

  2. #2
    Membre émérite
    Homme Profil pro
    Architecte technique
    Inscrit en
    Septembre 2005
    Messages
    462
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 462
    Par défaut
    Tu as deux solutions dont une qui me semble plus adaptée a ton besoin :
    Une boucle "for", sinon tu peux garder ton "foreach" avec un compteur.

    Exemple :
    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
    Console.WriteLine("For exemple");
                for (int i = 0; i < 20; i++)
                {
                    Console.WriteLine(i);
                }
     
                Console.WriteLine("Foreach exemple");
                List<int> elements = new List<int> { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20 };
                int maxElement = 10;
                int compteur = 0;
                foreach (var element in elements)
                {
                    compteur++;
                    Console.WriteLine(element);
                    if (compteur == maxElement)
                        break;
                }

  3. #3
    Membre chevronné Avatar de Jabbal'H
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2004
    Messages
    403
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2004
    Messages : 403
    Par défaut
    Un simple Take devrait fonctionner non ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    var skipList = ensemble.Take(10);
     
    foreach(var item in skipList)
    {
    	relever_numeros.Items.Add("" + p.InnerText);
    }

  4. #4
    Membre averti
    Homme Profil pro
    Webmaster
    Inscrit en
    Juin 2013
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Juin 2013
    Messages : 12
    Par défaut
    Merci pour la solution le code pour tous.


    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
    relever_numeros.Items.Clear();
     
                int compteur = 0;
                int maxElement = 21;
     
                string url = "https://www.fdj.fr/jeux/jeux-de-tirage/keno/resultats";
                HtmlWeb web = new HtmlWeb();
                HtmlAgilityPack.HtmlDocument doc = web.Load(url);
     
     
                 var ensemble = (from node in doc.DocumentNode.Descendants("p")
                                where node.Attributes.Contains("class")
                                where node.Attributes["class"].Value == "keno_num"
                                select node);
     
     
     
                 foreach (HtmlAgilityPack.HtmlNode p in ensemble)
                 {
     
                    compteur++;
                    if (compteur == maxElement) break;
                    relever_numeros.Items.Add("" + p.InnerText);
     
                 }

  5. #5
    Membre chevronné Avatar de Jabbal'H
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2004
    Messages
    403
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2004
    Messages : 403
    Par défaut
    Euh le Take ne fonctionne pas ?
    Car cette solution est quand même moyenne, tu fais une condition et un break juste pour tester un compteur !

    Au pire si le take ne fonctionne pas, fait le avec un for, ce sera plus performant et surtout plus lisible !

  6. #6
    Membre averti
    Homme Profil pro
    Webmaster
    Inscrit en
    Juin 2013
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Juin 2013
    Messages : 12
    Par défaut
    Je vais voir Merci

  7. #7
    Membre émérite
    Homme Profil pro
    Architecte technique
    Inscrit en
    Septembre 2005
    Messages
    462
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 462
    Par défaut
    Je confirme que le take est certainement la meilleur solution.

    Et la moins bonne est bien le foreach break;

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

Discussions similaires

  1. problème de code avec un tableau
    Par richard038 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 12/05/2006, 17h35
  2. problème de code javascript pour une vue 360°
    Par tomguiss dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 14/03/2006, 22h50
  3. [POO] Problème de code PHP avec Internet Explorer
    Par bzoler dans le forum Langage
    Réponses: 5
    Dernier message: 12/02/2006, 11h00
  4. Problème de code besoin d un petit depannage
    Par rakengoule dans le forum MFC
    Réponses: 3
    Dernier message: 10/10/2005, 16h25
  5. Probléme de code non portable
    Par Stany dans le forum Windows
    Réponses: 2
    Dernier message: 23/08/2005, 11h02

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