Come posso usare vb.net per leggere e stampare tutto il testo innerhtml dell'etichetta html su una pagina web

html html-agility-pack innerhtml labels vb.net

Domanda

Quindi ho un pacchetto di agilità HTML.

Sto tentando di leggere un html della pagina web. Ho bisogno del contenuto di un'etichetta ma non sono sicuro di come ottenerlo.

So qual è l'attributo for ... ma non so come usarlo per ottenere l'innerhtml dell'etichetta.

Qualcuno può aiutare, per favore

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

Aggiornare:

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

Risposta accettata

Guarda prima questo semplice esempio:

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

ora la variabile labelText contiene text text

Ed ecco un esempio per caricare l'html da un dato collegamento usando 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

Aggiornamento : poiché hai detto di averlo già aperto in un controllo WebBrowser , usa la proprietà DocumentText per ottenere il testo html come segue:

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

** Aggiornamento: ** Esempio su come ottenere la stringa Html dal controllo 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


Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché
Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché