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

VB.NET Discussion :

Parser une page html en VB


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Février 2017
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Février 2017
    Messages : 29
    Par défaut Parser une page html en VB
    Bonjours à tous

    Pour introduire ma demande je vais vous expliquer pourquoi je souhaites parser une page web.
    Je joue fréquemment au jeux de simulation War Thunder. Le jeux renvoie sur une page web tout un tas de donné concernant l'appareil qu'on pilote. C'est donné sont : le régime du moteur, la température et pression d'huile, l'altitude et j'en passe.
    Le but est d'extraire certaine de ces données et de les transmettre plus tard à un arduino, qui ensuite fera tourner des servos moteurs.
    La première étape consiste a extraire les données de la page web en parsant le code HTML avec un programme en VB.

    Voici une capture d'écran de la page HTML

    Nom : Capture.JPG
Affichages : 2408
Taille : 89,1 Ko

    J'ai commencé a créer mon programme en VB.
    Pour expliqué rapidement mon programme, je lui demande de ce connecté à la page web et de récupérer l'id "ind-rpm" et de l'écrire dans un label.
    Ce qui m’intéresse surtout c'est donc de récupérer la valeur rpm=0 (cette variable est mise à jour en temps réel en fonction du régime moteur demandé dans le jeux)
    Point positif, c'est que lors du débogage il n'y pas d'erreur
    Point négatif, c'est qu'il ne ce passe rien lorsque j’appuie sur le bouton dans mon programme
    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
    Imports HtmlAgilityPack
    Imports System.Xml.XPath
    Public Class Form1
        Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
            Dim web As New HtmlWeb
            Dim url As String = "http://x.x.x.x:8111"
            ' load du document html
            Dim doc As HtmlDocument = web.Load(url)
     
            ' Selection des nodes XPATH
     
            Dim MesNodes As HtmlNodeNavigator = doc.DocumentNode.CreateNavigator
            Dim xmlNodeIterator As XPathNodeIterator = MesNodes.Select("//div[@id='ind-rpm']")
            Dim rpm As String
            While xmlNodeIterator.MoveNext()
                ' la ligne ce dessous me génére l'erreur...
                rpm = xmlNodeIterator.Current.SelectSingleNode("rpm").Value
     
               Label1.Text &= "test" & vbCrLf
                Label1.Text &= rpm
            End While
        End Sub
    End Class
    PS : Les X qui apparaissent à la ligne 6 du code masque mon adresse IP

    Merci d'avance à ceux qui me liront

  2. #2
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Billets dans le blog
    3
    Par défaut
    Code VB.NET : Sélectionner tout - Visualiser dans une fenêtre à part
    MesNodes.Select("//div[@id='ind-rpm']")
    Pas regarde en details, mais on voit que tu selectionnes un DIV, alors que tu devrais selectionner un LI.
    Less Is More
    Pensez à utiliser les boutons , et les balises code
    Desole pour l'absence d'accents, clavier US oblige
    Celui qui pense qu'un professionnel coute cher n'a aucune idee de ce que peut lui couter un incompetent.

  3. #3
    Invité de passage Avatar de blaise mubadi
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2017
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Congo-Kinshasa

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2017
    Messages : 1
    Par défaut
    je suis intéressé. mais je ne pas compris ta difficulté?

  4. #4
    Membre averti
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Février 2017
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Février 2017
    Messages : 29
    Par défaut
    Citation Envoyé par DotNetMatt Voir le message
    Code VB.NET : Sélectionner tout - Visualiser dans une fenêtre à part
    MesNodes.Select("//div[@id='ind-rpm']")
    Pas regarde en details, mais on voit que tu selectionnes un DIV, alors que tu devrais selectionner un LI.
    Donc à la place d'écrire
    Code VB.NET : Sélectionner tout - Visualiser dans une fenêtre à part
    MesNodes.Select("//div[@id='ind-rpm']")

    je dois écrire
    Code VB.NET : Sélectionner tout - Visualiser dans une fenêtre à part
    MesNodes.Select("//li[@id='ind-rpm']")

    C'est ça ?

    Citation Envoyé par blaise mubadi Voir le message
    je suis intéressé. mais je ne pas compris ta difficulté?
    Bah la difficulté c'est lors de l’appuie du bouton rien ne ce passe

  5. #5
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Billets dans le blog
    3
    Par défaut
    Citation Envoyé par VRVI44 Voir le message
    C'est ça ?
    En effet :
    Code VB.NET : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim rpmIndicatorLiNode = doc.DocumentNode.SelectSingleNode("//li[@id='ind-rpm']")
    Dim rpmIndidcatorValue = rpmIndicatorLiNode.InnerText ' La on recupere bien rpm=0
    Less Is More
    Pensez à utiliser les boutons , et les balises code
    Desole pour l'absence d'accents, clavier US oblige
    Celui qui pense qu'un professionnel coute cher n'a aucune idee de ce que peut lui couter un incompetent.

  6. #6
    Membre averti
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Février 2017
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Février 2017
    Messages : 29
    Par défaut
    Merci de m'aider c'est cool

    Alors j'ai modifier le programme comme suit

    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
    Imports HtmlAgilityPack
    Imports System.Xml.XPath
    Public Class Form1
        Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
            Dim web As New HtmlWeb
            Dim url As String = "http://x.x.x.x:8111"
            ' load du document html
            Dim doc As HtmlDocument = web.Load(url)
     
            Dim MesNodes As HtmlNodeNavigator = doc.DocumentNode.CreateNavigator
            Dim rpmIndicatorLiNode = doc.DocumentNode.SelectSingleNode("//li[@id='ind-rpm']")
            Dim rpmIndidcatorValue = rpmIndicatorLiNode.InnerText ' La on recupere bien rpm=0
     
            Label1.Text = "test recup var."
        End Sub
    End Class
    Mais j'ai surement fais une erreur car lors du débogage quand j'appuie sur le bouton, voila ce qu'il ce passe

    Nom : Capture.JPG
Affichages : 2411
Taille : 115,6 Ko

    Je ne vois pas comment régler ce défaut car je comprend pas ce que me demande le logiciel (halala les débutants )

  7. #7
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Billets dans le blog
    3
    Par défaut
    Alors deja la ligne Dim MesNodes As HtmlNodeNavigator = doc.DocumentNode.CreateNavigator ne sert a rien donc tu peux la virer.

    Ensuite, met un point d'arret sur la ligne Dim rpmIndicatorLiNode = doc.DocumentNode.SelectSingleNode("//li[@id='ind-rpm']") et quand il est atteint, regarde la valeur de doc.DocumentNode.OuterHtml et copie-la ici. Ca nous permettra de verifier que la structure du HTML correspond au premier screenshot que tu as mis ici.
    Less Is More
    Pensez à utiliser les boutons , et les balises code
    Desole pour l'absence d'accents, clavier US oblige
    Celui qui pense qu'un professionnel coute cher n'a aucune idee de ce que peut lui couter un incompetent.

Discussions similaires

  1. Parser une page HTML avec du PHP
    Par Richard_Rahl dans le forum Langage
    Réponses: 9
    Dernier message: 19/08/2008, 15h36
  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