Использование HtmlAgilityPack в VB.Net для получения текста с веб-сайта

html-agility-pack vb.net

Вопрос

Я пишу программу для своей подруги, которая позволяет ей открывать программу, и она автоматически соберет ее цитатой с сайта Horoscope и отобразит эту строку текста в TextBox.

По состоянию на то, что у меня есть сейчас, он в основном отображает весь веб-сайт в HTML, чего я не хочу. Это строка HTML, которую мне нужно захватить.

<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>

Код, который у меня есть до сих пор.

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

Спасибо за любую помощь, которую я могу получить. Я честно понятия не имею, где пойти с этой программой сейчас. Прошло 3 дня без прогресса.

Принятый ответ

Изучите XPath или LINQ, чтобы вытащить определенную информацию из HTML-документа с помощью HtmlAgilityPack. Это пример консольного приложения, в котором используется селектор 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

вывод :

У вас может быть желание путешествовать, возможно, посетить друга, который живет далеко, Близнецы. Вы можете настроить колеса в движении, чтобы это произошло. В этот вечер общественные мероприятия могут занять ваше время, и вы сможете встретить интересных людей. Другу может понадобиться сочувственное ухо. Сегодня вы особенно чувствительны к другим, поэтому будьте готовы услышать печальную историю. В противном случае ваш день должен идти хорошо.



Related

Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Является ли этот КБ законным? Да, узнайте, почему
Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Является ли этот КБ законным? Да, узнайте, почему