extrayendo solo el texto de la página usando HTMLAgilityPack

.net c# html-agility-pack xml-parsing xpath

Pregunta

Ok, así que soy realmente nuevo en las consultas XPath usadas en HTMLAgilityPack.

Así que consideremos esta página http://health.yahoo.net/articles/healthcare/what-your-favorite-flavor-says-about-you . Lo que quiero es extraer solo el contenido de la página y nada más.

Así que para eso primero elimino las etiquetas de estilo y script.

Document = new HtmlDocument();
        Document.LoadHtml(page);
        TempString = new StringBuilder();
        foreach (HtmlNode style in Document.DocumentNode.Descendants("style").ToArray())
        {
            style.Remove();
        }
        foreach (HtmlNode script in Document.DocumentNode.Descendants("script").ToArray())
        {
            script.Remove();
        }

Después de eso estoy tratando de usar // text () para obtener todos los nodos de texto.

foreach (HtmlTextNode node in Document.DocumentNode.SelectNodes("//text()"))
        {
            TempString.AppendLine(node.InnerText);
        }

Sin embargo, no solo no recibo solo texto sino que también obtengo muchos / r / n caracteres.

Por favor necesito un poco de orientación al respecto.

Respuesta popular

Si considera que la script y los nodos de style solo tienen nodos de texto para niños, puede utilizar esta expresión XPath para obtener nodos de texto que no están en las etiquetas de script de script o style , de modo que no es necesario eliminar los nodos de antemano:

//*[not(self::script or self::style)]/text()

Puede excluir aún más los nodos de texto que solo son espacios en blanco usando el normalize-space() de XPath normalize-space() :

//*[not(self::script or self::style)]/text()[not(normalize-space(.)="")]

o el mas corto

//*[not(self::script or self::style)]/text()[normalize-space()]

Pero todavía obtendrá nodos de texto que pueden tener espacios en blanco iniciales o finales. Esto se puede manejar en su aplicación como sugiere @ aL3891.



Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué
Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué