2009-02-05 31 views
15

Me gustaría saber si existe una forma sencilla de analizar HTML en vb.net. Sé que HTML no es un subconjunto de espectro de XML, pero sería bueno si pudiera tratarse de esa manera. ¿Hay algo por ahí que me permita analizar HTML de forma similar a XML en VB.net?Cómo se analiza un código HTML en vb.net

+0

Podría ayudarnos a responder si declara lo que quiere hacer con una vez que se haya analizado. – Rob

+0

Por ahora, estoy interesado en poder seleccionar todos los enlaces, textos e imágenes en divs específicos. Donde la clase div o id cambiará/puede cambiar de página a página. – tooleb

+0

parece que el paquete HTML Agility probablemente me funcione. ¿Hay alguna otra opción ??? – tooleb

Respuesta

7

Me gusta Html Agility pack - es muy amigable para desarrolladores, gratuita y el código fuente está disponible.

+0

Pero el desarrollador de código de autodiagnóstico es amigable. Entiendo que el término "desarrollador amigable" puede ser muy subjetivo, sin embargo, traté de varias maneras de analizar/modificar el código HTML y este es simple el mejor (para .NET y sin costo), lo que puede obtener y la ausencia de documentación no lo cambies Es una cruel realidad. – TcKs

+0

No pude obtener el paquete HTML Agility para hacer algo útil para mí. Todo lo que obtenía era la salida HTML directa al cuadro de texto, en lugar del HTML formateado y analizado. –

+0

@JoelR. Hiciste algo terriblemente mal. ¿Leíste algunos tutoriales sobre eso? – TcKs

1

¿Está bien formado? Si el HTML está bien formado, entonces se puede analizar como XML. Si es una sopa de etiquetas y hay elementos no cerrados, creo que tendrías que buscar una solución de terceros.

+0

¿Qué pasó con el acceso al modelo de objetos del documento (dom) usando mshtml? –

4

Si su HTML sigue los estándares XHTML, puede hacer una gran parte del análisis y el procesamiento utilizando las clases de espacio de nombres System.XML.

Si, por el contrario, lo que está analizando es lo que los desarrolladores web llaman "sopa de etiquetas", necesitará un analizador de terceros como HTML Agility Pack.

Esto puede ser solo una solución parcial a su problema si está intentando descubrir cómo un navegador interpretará su HTML, ya que cada navegador analiza la sopa de etiquetas de forma ligeramente diferente.

12

'añadir ref prog demasiado: Microsoft.mshtml

', entonces en la página:

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 

como se encuentra here:

+0

¿no utiliza esencialmente las mismas bibliotecas que IE utiliza para cargar su DOM? Lo he intentado antes, pero siempre se siente tan sucio ... – tooleb

4

No utilice paquete de agilidad, sólo tiene que utilizar la biblioteca para mshtml acceda al dom, esto es lo que utiliza y es ideal para pasar por elementos HTML.

El paquete de agility es desagradable e innecesariamente hackie si me preguntas, mshtml es el camino a seguir. Búscalo en msdn.

Cuestiones relacionadas