2009-02-05 10 views
15

Vorrei sapere se esiste un modo semplice per analizzare l'HTML in vb.net. So che HTML non è un sottoinsieme di XML, ma sarebbe bello se potesse essere trattato in questo modo. C'è qualcosa là fuori che mi permetta di analizzare HTML in un modo simile a XML in VB.net?Come si analizza un codice HTML in vb.net

+0

Potrebbe aiutarci a rispondere se dichiari cosa vuoi fare con esso una volta che è stato analizzato. – Rob

+0

Per ora, mi interessa essere in grado di selezionare tutti i collegamenti, il testo e le immagini in specifiche div. Dove la classe div o id cambierà/potrebbe cambiare da una pagina all'altra. – tooleb

+0

sembra che HTML Agility pack probabilmente funzionerà per me. Ci sono altre opzioni ???? – tooleb

risposta

7

Mi piace Html Agility pack - è molto sviluppatore, gratuito e il codice sorgente è disponibile.

+0

Ma lo sviluppatore del codice di autocostruzione è amichevole. Capisco che il termine "sviluppatore amichevole" può essere molto soggettivo, tuttavia ho provato diversi modi per analizzare/modificare il codice HTML e questo è semplice il meglio (per .NET e per pagamento gratuito), ciò che è possibile ottenere e l'assenza di documentazione non cambiarlo È una realtà crudele. – TcKs

+0

Non sono riuscito a ottenere il pacchetto Agilità HTML per fare qualcosa di utile per me. Tutto quello che stavo ottenendo era l'output HTML diretto nella casella di testo, anziché l'HTML formattato in modo analogo. –

+0

@JoelR. Hai fatto qualcosa di terribilmente sbagliato. Hai letto alcuni tutorial su questo? – TcKs

1

È ben formato? Se l'HTML è in realtà ben formato, può essere analizzato come XML. Se si tratta di zuppa di tag e non ci sono elementi non chiusi e penso che dovresti cercare in giro per una soluzione di terze parti.

+0

Che cosa è successo ad accedere al modello di oggetto documento (dom) usando mshtml? –

4

Se il codice HTML segue gli standard XHTML, è possibile eseguire molte operazioni di analisi e elaborazione utilizzando le classi dello spazio dei nomi System.XML.

Se, d'altra parte, se ciò che stai analizzando è ciò che gli sviluppatori web definiscono "zuppa di tag", avrai bisogno di un parser di terze parti come HTML Agility Pack.

Questa può essere solo una soluzione parziale al tuo problema se stai cercando di capire come un browser interpreterà il tuo codice HTML in quanto ogni browser analizza la zuppa di tag in modo leggermente diverso.

12

'aggiungere prog ref troppo: Microsoft.mshtml

' quindi nella pagina:

Imports mshtml 

Function parseMyHtml(ByVal htmlToParse$) As String 
    Dim htmlDocument As IHTMLDocument2 = New HTMLDocumentClass() 
    htmlDocument.write(htmlToParse) 
    htmlDocument.close() 

    Dim allElements As IHTMLElementCollection = htmlDocument.body.all 

    Dim allInputs As IHTMLElementCollection = allElements.tags("a") 
    Dim element As IHTMLElement 
    For Each element In allInputs 
     element.title = element.innerText 
    Next 

    Return htmlDocument.body.innerHTML 
End Function 

Come trovato here:

+0

non usa essenzialmente le stesse librerie che IE usa per caricare il suo DOM? Ho già provato questo, ma sembra sempre così sporco .... – tooleb

4

Non usare l'agilità confezione, basta usare MSHTML biblioteca per accedi al dom, questo è ciò che vale a dire usi ed è ottimo per passare attraverso elementi HTML.

Agility pack è un brutto e inutilmente hackie se me lo chiedi, mshtml è la strada da percorrere. Cercalo su msdn.

Problemi correlati