Comment utiliser vb.net pour lire et imprimer tout le texte innerhtml d'une étiquette html sur une page Web

html html-agility-pack innerhtml labels vb.net

Question

J'ai donc le pack d'agilité HTML.

Je tente de lire une page Web html. J'ai besoin du contenu d'une étiquette mais je ne sais pas comment l'obtenir.

Je sais ce que l'attribut for est .. mais je ne sais pas comment l'utiliser pour obtenir le innerhtml de l'étiquette.

Quelqu'un peut-il aider s'il vous plaît

Private Sub SetTextboxText(ByVal Text As String)
    DirectCast(GetCurrentWebForm.item("frmLogin:strCustomerLogin_userID"), mshtml.HTMLInputElement).value = ""
    DirectCast(GetCurrentWebForm.item("frmLogin:strCustomerLogin_pwd"), mshtml.HTMLInputElement).value = ""
    ClickNormalButton()
    Memorable_Reader()
    End Sub

'Gets and Sets Memorable Information
Private Sub Memorable_Reader()
    'Read Label 'For' Attribute
    'Display Innerhtml Text in msgbox
End Sub

'CLICKS THE SUBMIT BUTTON
Private Sub ClickNormalButton()
    GetCurrentWebForm.submit()
End Sub

Mettre à jour:

Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    WebBrowser1.Navigate("https://online.lloydsbank.co.uk/personal/logon/login.jsp?WT.ac=PLO0512")
    Dim htmlDoc As New HtmlAgilityPack.HtmlDocument
    htmlDoc.LoadHtml(WebBrowser1.DocumentText)
    Dim labelElement = htmlDoc.DocumentNode.SelectSingleNode("//label[@for='frmLogin:strCustomerLogin_userID']")
    Dim labelText = ""
    If labelElement IsNot Nothing Then
        labelText = labelElement.InnerText
    End If

    MsgBox(labelText) <---- Comes out with nothing aka ""
    MsgBox(labelElement.InnerText) <---- same as above
End Sub

Réponse acceptée

Regardez d'abord cet exemple simple:

Dim htmlString = "<form><label for='something'>text text</label></form>"
Dim htmlDoc As New HtmlAgilityPack.HtmlDocument
Dim labelElement = htmlDoc.DocumentNode.SelectSingleNode("//label[@for='something']")
Dim labelText = ""
If labelElement IsNot Nothing Then
     labelText = labelElement.InnerText
End If

maintenant la variable labelText contient du text text

Et voici un exemple de chargement du code HTML à partir d'un lien donné à l'aide de WebClient

Dim htmlDoc As New HtmlAgilityPack.HtmlDocument
Dim webClinet As New System.Net.WebClient
Dim html As String = ""
'add your web page link here
html = webClinet.DownloadString("http://yourlink.com/")
htmlDoc.LoadHtml(html)
'and here add your for attribute value for that label instead of something
Dim labelElement =htmlDoc.DocumentNode.SelectSingleNode("//label[@for='something']")
Dim labelText = ""
If labelElement IsNot Nothing Then
    labelText = labelElement.InnerText
End If

Mise à jour : puisque vous dites que vous l'avez déjà ouvert dans un contrôle WebBrowser , utilisez la propriété DocumentText pour obtenir le texte HTML comme suit:

Dim htmlDoc As New HtmlAgilityPack.HtmlDocument
htmlDoc.LoadHtml(webBrowser1.DocumentText)
Dim labelElement =htmlDoc.DocumentNode.SelectSingleNode("//label[@for='something']")
Dim labelText = ""
If labelElement IsNot Nothing Then
   labelText = labelElement.InnerText
End If

** Mise à jour: ** Exemple sur la façon d'obtenir une chaîne HTML à partir du contrôle WebBrowser

Public Class Form1
    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        WebBrowser1.Navigate("https://www.google.com")
    End Sub

    Private Sub WebBrowser1_DocumentCompleted(sender As Object, e As WebBrowserDocumentCompletedEventArgs) Handles WebBrowser1.DocumentCompleted
        MessageBox.Show(WebBrowser1.DocumentText)
    End Sub
End Class



Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi