Paquete de agilidad de Visual Basic y HTML

html-agility-pack vb.net visual-studio-2012

Pregunta

Estoy tratando de sacar el título de la página de yahoo

http://finance.yahoo.com/q?s=plug

Le pido al usuario que Symbol sea crea la url: http://finance.yahoo.com/q?s=plug

El programa funciona muy bien cuando carga un archivo .html local de la misma página ...

Aquí está mi código:

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click

    Dim symbol As String, htmldoc As New HtmlDocument
    symbol = TextBox3.Text
    htmldoc.Load("http://finance.yahoo.com/q?s=plug")
    Dim items = htmldoc.DocumentNode.SelectNodes("//head/title").Select(Function(node) New KeyValuePair(Of String, String)(node.InnerText, node.InnerText))

    For Each item As KeyValuePair(Of String, String) In items
        Console.WriteLine(item.Key)
        Console.WriteLine(item.Value)
    Next

End Sub

¿Alguien tiene alguna idea de cómo podría conseguir este trabajo? Eventualmente quiero tirar de los precios de las acciones, etc ...

También me abato por aprender una manera más fácil de hacer lo que estoy tratando de lograr. En lugar de usar KeyValuePair, etc ... Solo algo que finalmente pude trabajar en otra pregunta de SO.

Gracias.

Respuesta popular

Al extraer una URL web, debe utilizar la clase HtmlWeb para cargar los documentos. El método HtmlDocument.Load solo puede leer desde archivos locales (o secuencias). Probablemente esté viendo un error en las líneas de "no se puede leer de la URL" o "no se admite la URL".

Dim url = "http://finance.yahoo.com/q?s=plug"
Dim web = new HtmlWeb
Dim doc = web.Load(url)
Dim titleNode = doc.DocumentNode.SelectSingleNode("/html/head/title")
Dim title As String
If titleNode IsNot Nothing Then
    title = titleNode.InnerText
End If


Related

Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow