Usare Html Agility Pack per afferrare il contenuto del testo

html html-agility-pack vb.net

Domanda

Farò del mio meglio per specifico. Fondamentalmente lavorando su un crawler in vb.net per cui sono più interessato ad estrarre il contenuto testuale della pagina. La mia applicazione corrente scarica il corpo del codice html in una casella di testo utilizzando un controllo del browser Web come segue:

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)   Handles Button1.Click
    Dim url As String = "<url>"
    WebBrowser1.Navigate(url)
End Sub

Private Sub WebBrowser1_DocumentCompleted(ByVal sender As System.Object, ByVal e As    System.Windows.Forms.WebBrowserDocumentCompletedEventArgs) Handles WebBrowser1.DocumentCompleted
    TextBox2.Text = WebBrowser1.Document.Body.OuterHtml
End Sub

Ora da qui in avanti, textbox2 è costituito da junk html che contiene href, img, ads, script, ecc. Ma ho bisogno di fare un giro su tutti questi metadati e prendere il testo in chiaro.

Potrei applicare le proprietà regex per ottenere il giro di tutte le anomalie, ma penso che HAP sia molto più appropriato per il parser html.

La ricerca qui mi ha portato a questa pagina che parla dell'uso della tecnica Whitelist menzionata da 'Meltdown'

Tag di etichette HTML Agility Pack NON IN BIitelist

Ma come lo applico in vb.net perché sembra una grande idea?

Per favore, ragazzi ..........

EDIT: Ho trovato una versione vb.net del codice mostrato di seguito, ma sembra esserci un errore in

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)   Handles Button1.Click
    Dim url As String = "<url>"
    WebBrowser1.Navigate(url)
End Sub

Private Sub WebBrowser1_DocumentCompleted(ByVal sender As System.Object, ByVal e As    System.Windows.Forms.WebBrowserDocumentCompletedEventArgs) Handles WebBrowser1.DocumentCompleted
    TextBox2.Text = WebBrowser1.Document.Body.OuterHtml
End Sub

Errori: IsNot richiede operandi con tipi di riferimento, ma questo operando ha il valore intero

Ecco il codice:

Public NotInheritable Class HtmlSanitizer Private Sub New () End Sub Private Shared ReadOnly Whitelist As IDictionary (Of String, String ()) Private Shared DeletableNodesXpath As New List (Of String) ()

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)   Handles Button1.Click
    Dim url As String = "<url>"
    WebBrowser1.Navigate(url)
End Sub

Private Sub WebBrowser1_DocumentCompleted(ByVal sender As System.Object, ByVal e As    System.Windows.Forms.WebBrowserDocumentCompletedEventArgs) Handles WebBrowser1.DocumentCompleted
    TextBox2.Text = WebBrowser1.Document.Body.OuterHtml
End Sub

Per favore qualcuno può aiutare ??????

Risposta popolare

Invece di usare IsNot , basta usare <> . Poiché controlli in modo basale il valore di un intero non equivale al valore di un altro intero: 1.

Credo che IsNot non possa essere usato su interi.

modifica: ho appena notato che questo è super super vecchio. Ho appena visto la data del 26 luglio!




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é