2011-07-27 65 views
7

¡Necesito ayuda con HTML Agility Pack!Extraer texto interno del nodo HTML BODY con Html Agility Pack

Básicamente quiero tomar texto plano con el nodo del cuerpo del HTML. Hasta ahora lo he intentado en vb.net y no devuelve el texto que significa , no se ve ningún cambio, al menos por lo que puedo ver.

Dim htmldoc As HtmlDocument = New HtmlDocument 
htmldoc.LoadHtml(html) 

Dim paragraph As HtmlNodeCollection = htmldoc.DocumentNode.SelectNodes("//body") 

If Not htmldoc Is Nothing Then 
    For Each node In paragraph 
     node.ParentNode.RemoveChild(node, True) 
    Next 
End If 

Return htmldoc.DocumentNode.WriteContentTo 

He intentado esto:

Return htmldoc.DocumentNode.InnerText 

Pero sigue sin suerte!

¿Algún consejo?

+1

posible duplicado de [Grab todo el texto de HTML con HTML agilidad Pack] (http://stackoverflow.com/questions/4182594/grab-all-text-from-html- with-html-agility-pack) – richard

Respuesta

13

¿Qué tal:

Return htmldoc.DocumentNode.SelectSingleNode("//body").InnerText 
+0

Hola, Jeff, también lo intenté antes, pero los datos devueltos contienen muchos caracteres no deseados como &, {,} y muchas etiquetas de html y también scripts. El espacio entre líneas está fuera de la ventana :) Tal vez podría usar expresiones regulares para arreglar eso. Pero quiero concentrarme más en Html Agility Pack – Kevin

+0

. Bueno, no hay mucho que pueda hacer al respecto, excepto limpiar el html de los indeseables. InnerText incluye todo lo que ve en el documento que no es parte del elemento. Eso incluye espacios en blanco, código en nodos de script, etc. Si su objetivo es obtener el texto tal como se ve en un navegador web, no lo obtendrá de esta manera. –

+0

Hmm Entiendo lo que quieres decir. Tal vez me confundí con el texto inerte y el texto plano. El objetivo principal es recuperar el texto limpio o el HTML analizado con contenido de texto principal en él. ¿Podrías mostrarme cómo resolver esto, por favor? – Kevin

Cuestiones relacionadas