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

WinDev Discussion :

Parser une page HTML, utilisation d'un assemblage .net HTML Agility pack [WD19]


Sujet :

WinDev

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Mars 2015
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2015
    Messages : 7
    Points : 5
    Points
    5
    Par défaut Parser une page HTML, utilisation d'un assemblage .net HTML Agility pack
    Bonjour à tous,

    Dans mon programme, je dois "parser" une page html afin de récupérer des valeurs.
    Ex: récupérer la valeur dans une balise DIV ayant comme id "commande".

    Apres quelques recherches , je suis tombé sur un assemblage .net permettant de parser le code HTML, il s'agit de HTML AGILITY PACK. Par contre j'ai quelques difficultés pour l'exploiter.

    J'arrive à l'importer dans windev et à le déclarer, J'arrive aussi à charger mon fichier html dedans.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    MonHtml est un "HtmlAgilityPack.HtmlDocument"
    MonHtml.Load("commande.html")
    J'arrive aussi à retrouver un élémént par id, le code ci dessous me renvoi bien le texte contenu dans la balise div ayant pour id copyright
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    trace(MonHtml.GetElementbyId("copyright").InnerText)
    par contre je dois faire une recherche par classe au lieu de l'id et la cela se complique.

    Voici le code en C# mais je n'arrive pas a le traduire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    var titles = page.DocumentNode.SelectNodes("//h2[@class='entry-title']");
    // Returns all titles on the home page of this site in an array.
    //To process the list just iterate through it.
     
    List<string> pageTitles = new List<string>();
    foreach (var title in titles)
    {
        pageTitles.Add(title.InnerText);
    }
    J'ai essayer avec le code ci-dessous mais cela ne fonctionne pas.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    TitleElement est variant
    TitleElement = MonHtml.DocumentNode.SelectNodes("//li[@class='last_sold']")
     POUR TOUT MonElem DE TitleElement
     	Trace (MonElem)
     
     FIN
    j'ai une erreur du style
    Vous avez appelé la fonction Trace.
    Le passage du paramètre 1 a provoqué une erreur.
    Un élément de type 'objet .NET' ne peut pas être converti vers le type 'chaîne UNICODE'.

    Pourriez vous m'aider à corriger ce code afin de récupérer les éléments.. Si quelqu'un à un autre assemblage .net ou une autre méthode pour récupérer les infos dans une page HTML, je suis aussi preneur

    Merci d'avance

    Guillaume

  2. #2
    Membre éprouvé
    Inscrit en
    Avril 2008
    Messages
    1 129
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 1 129
    Points : 1 283
    Points
    1 283
    Par défaut
    Salut,

    Pourquoi n'utilise tu pas le champ HTML de windev?
    Il te suffit de récupérer le code, parser à l'aide de ExtraitChaine

    Bon DEV

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Mars 2015
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2015
    Messages : 7
    Points : 5
    Points
    5
    Par défaut
    EDIT : J'y suis arrivé avec un extraitchaine, c'est pas super propre comme solution mais cela fonctionne.

    Bonjour,
    Merci pour ta réponse, voila le code HTML et en gras ce que je dois récupérer.
    J'avais pensé a cette méthode avec extraitChaine, mais cela me parait quand même assez "barbare" pour récupérer ces 4 données.
    Là c'est la partie du code html de la page qui m’intéresse mais dans la page le code est bcp plus long...c'est a dire que des <h4> il y en a des dizaines dans la page, comment cibler les bons (lowest, median,...) et surtout recuperer la valeur apres la fin du </h4>?

    <ul class="last">
    <li class="last_sold">
    <h4>Last Sold:</h4>
    <a href="/sell/history/3489791">20 Jan 15</a>
    </li>
    <li>
    <h4>Lowest:</h4>
    €10.00
    </li>
    <li>
    <h4>Median:</h4>
    €12.00
    </li>
    <li>
    <h4>Highest:</h4>
    €25.00
    </li>
    </ul>

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

Discussions similaires

  1. [DOM] Utilisation du DOM pour parser une page HTML en php
    Par chabliya dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 01/05/2012, 21h13
  2. Parser une page html ?
    Par SimoX1 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 03/12/2006, 19h10
  3. Parser une page Html pour récuperer valeur
    Par Andry dans le forum Delphi
    Réponses: 5
    Dernier message: 01/12/2006, 17h10
  4. Parser une page html, quel outil ?
    Par ggnore dans le forum Linux
    Réponses: 5
    Dernier message: 28/11/2006, 11h48
  5. parser une page HTML pour en retirer de l'info
    Par belakhdarbts10 dans le forum ASP
    Réponses: 1
    Dernier message: 29/10/2006, 18h38

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