¿Cómo puedo usar vb.net para leer e imprimir todo el texto de la etiqueta html innerhtml en una página web?

html html-agility-pack innerhtml labels vb.net

Pregunta

Así que tengo paquete de agilidad HTML.

Estoy intentando leer un html de página web. Necesito el contenido de una etiqueta, pero no estoy seguro de cómo obtenerla.

Sé cuál es el atributo for ... pero no sé cómo usarlo para obtener el código interno de la etiqueta.

¿Alguien puede ayudar por favor?

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

Actualizar:

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

Respuesta aceptada

Primer vistazo a este simple ejemplo:

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

ahora la variable labelText contiene text text

Y aquí hay un ejemplo para cargar el html desde un enlace dado 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

Actualización : ya que dijo que ya lo tiene abierto en un control WebBrowser , use la propiedad DocumentText para obtener el texto html de la siguiente manera:

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

** Actualización: ** Ejemplo sobre cómo obtener una cadena HTML del control 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


Related

Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué
Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué