Uso de HtmlAgilityPack en VB.Net para obtener texto de un sitio web

html-agility-pack vb.net

Pregunta

Estoy escribiendo un programa para mi novia que le permite abrir el programa y automáticamente obtendrá una cita de un sitio web de Horóscopo y mostrará esa línea de texto en un cuadro de texto.

A partir de lo que tengo ahora, básicamente muestra el sitio web completo en HTML, que no es lo que quiero. Esta es la línea HTML que necesito agarrar.

<div class="fontdef1" style="padding-right:10px;" id="textline">
"You might have the desire for travel, perhaps to visit a friend who lives far away, Gemini. You may actually set the wheels in motion to make it happen. Social events could take up your time this evening, and you could meet some interesting people. A friend might need a sympathetic ear. Today you're especially sensitive to others, so be prepared to hear a sad story. Otherwise, your day should go well. 
</div>

El código que tengo hasta ahora es.

Imports System.Net
Imports System.IO
Imports HtmlAgilityPack

Public Class Form1

    Private Function getHTML(ByVal Address As String) As String
        Dim rt As String = ""

        Dim wRequest As WebRequest
        Dim wResponse As WebResponse

        Dim SR As StreamReader

        wRequest = WebRequest.Create(Address)
        wResponse = wRequest.GetResponse

        SR = New StreamReader(wResponse.GetResponseStream)

        rt = SR.ReadToEnd
        SR.Close()

        Return rt
    End Function

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Label2.Text = Date.Now.ToString("MM/dd/yyyy")
        TextBox1.Text = getHTML("http://my.horoscope.com/astrology/free-daily-horoscope-gemini.html")
    End Sub
End Class

Gracias por cualquier ayuda que pueda obtener. Sinceramente, no tengo idea de a dónde ir con este programa ahora. Han pasado 3 días sin progreso.

Respuesta aceptada

Aprenda XPath o LINQ para extraer cierta información de un documento HTML utilizando HtmlAgilityPack. Este es un ejemplo de aplicación de consola que utiliza el selector XPath:

Imports System
Imports System.Xml
Imports HtmlAgilityPack

Public Module Module1
    Public Sub Main()
        Dim link As String = "http://my.horoscope.com/astrology/free-daily-horoscope-gemini.html"
        'download page from the link into an HtmlDocument'
        Dim doc As HtmlDocument = New HtmlWeb().Load(link)
        'select <div> having class attribute equals fontdef1'
        Dim div As HtmlNode = doc.DocumentNode.SelectSingleNode("//div[@class='fontdef1']")
        'if the div is found, print the inner text'
        If Not div Is Nothing Then
            Console.WriteLine(div.InnerText.Trim())
        End If
    End Sub
End Module

Dotnetfiddle Demo

salida:

Es posible que tenga ganas de viajar, tal vez visitar a un amigo que vive lejos, Géminis. Realmente puedes poner las ruedas en movimiento para que esto suceda. Los eventos sociales podrían ocupar su tiempo esta noche, y podría conocer a algunas personas interesantes. Un amigo puede necesitar un oído comprensivo. Hoy eres especialmente sensible a los demás, así que prepárate para escuchar una historia triste. De lo contrario, su día debería ir bien.




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é