HtmlAgilityPack y HtmlDecode

html-agility-pack

Pregunta

Actualmente estoy usando HtmlAgilityPack con una aplicación de consola para raspar un sitio web. Dado que el html está codificado (devuelve caracteres codificados como ' ) tengo que decodificar antes de guardar el contenido en mi base de datos.

¿Hay una manera de decodificar el HTML devuelto usando HtmlAgilityPack sin tener que usar HttpUtility.HtmlDecode? Quiero evitar agregar System.Web a mi aplicación de consola si es posible.

Respuesta aceptada

El Html Agility Pack está equipado con una clase de utilidad llamada HtmlEntity . Tiene un método estático con la siguiente firma:

    /// <summary>
    /// Replace known entities by characters.
    /// </summary>
    /// <param name="text">The source text.</param>
    /// <returns>The result text.</returns>
    public static string DeEntitize(string text)

Admite entidades conocidas (como &nbsp; ) y caracteres codificados como &#039; también.


Respuesta popular

Sólo añadir mis 2 centavos: He encontré con algunas pruebas de rendimiento utilizando StopWatch clase y encontré que HttpUtility.HtmlDecode es de aproximadamente 15-20% más rápido que el DeEntitize método. También DeEntitize tiene algunos errores (ver comentarios arriba).

Así que tal vez hacer referencia a System.Web no es tan malo después de todo.

Si está escribiendo una aplicación que ya tiene como objetivo ".NET completo" (a diferencia de ".NET Client Profile", que es una versión liviana), me gustaría referirme a System.Web.



Related

Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow