AYUDA .NET

Html Agility Pack C# (Cómo funciona para desarrolladores)

Actualizado 4 de junio, 2024
Compartir:

Introducción

La necesidad de gestionar y manipular dinámicamente el contenido de los documentos está muy extendida en el mundo del desarrollo en C#. Los desarrolladores suelen confiar en bibliotecas robustas para automatizar actividades como la creación de informes en PDF y la extracción de datos de páginas web. Este artículo explora la integración directa de IronPDF y HTML Agility Pack en C# y proporciona ejemplos de código para demostrar cómo se pueden utilizar estas bibliotecas para crear documentos PDF y leer texto HTML sin esfuerzo.

Por otro lado, IronPDF es una biblioteca .NET con muchas funciones para trabajar con archivos PDF. Dado que IronPDF permite a los desarrolladores generar dinámicamente archivos PDF a partir de contenidos HTML, URL o datos sin procesar, constituye una valiosa herramienta para la creación de documentos, la elaboración de informes y la visualización de datos.

Para agilizar la generación de documentos en aplicaciones .NET, en este post veremos cómo conectar IronPDF con HtmlAgilityPack. La combinación de estas tecnologías permite a los programadores trabajar con sistemas remotos, generar páginas PDF dinámicas y obtener datos a través de la conectividad de red, todo ello aumentando la productividad y la escalabilidad de sus programas.

Cómo utilizar HtmlAgilityPack en C#

  1. Cree un nuevo proyecto C#.
  2. Instale la biblioteca HtmlAgilityPack.
  3. Importa el espacio de nombres. Crea un objeto.
  4. Importar datos desde Url y Parsear el HTML.
  5. Obtener los datos requeridos y disponer del objeto.

Introducción a HtmlAgilityPack

Paquete de agilidad HTML es una biblioteca de análisis sintáctico de HTML versátil y potente para desarrolladores .NET. Con la ayuda de su amplia colección de API, los desarrolladores pueden navegar, alterar y extraer datos de documentos HTML con facilidad. HTML Agility Pack facilita el trabajo con contenidos HTML mediante programación a todos los desarrolladores, independientemente de su nivel de experiencia.

La capacidad de HTML Agility Pack para gestionar con delicadeza el HTML mal organizado o defectuoso es lo que lo hace único. Es perfecto para operaciones de scraping en línea en las que la calidad del marcado HTML puede variar, ya que utiliza un algoritmo de análisis indulgente que puede analizar incluso el HTML peor construido.

Características de HtmlAgilityPack

Análisis de HTML

Con las potentes funciones de análisis sintáctico de HTML que ofrece HTML Agility Pack, los desarrolladores pueden cargar documentos HTML desde diversas fuentes, como archivos, URL y cadenas. Gracias a su enfoque indulgente del análisis sintáctico, puede manejar HTML mal formateado o incorrecto, lo que lo hace adecuado para actividades de web scraping en las que la calidad del marcado HTML puede variar.

Manipulación del DOM

Para explorar, navegar y trabajar con el Modelo de Objetos de Documento HTML (DOM) HAP ofrece una API fácil de usar. Los desarrolladores pueden añadir, eliminar o modificar mediante programación elementos HTML, atributos y nodos de texto, lo que permite manipular el contenido HTML de forma dinámica.

Compatibilidad con XPath y LINQ

Para elegir y consultar componentes HTML, HTML Agility Pack admite LINQ (Idioma Consulta integrada) así como búsquedas con sintaxis XPath. Para elegir elementos en un documento HTML según sus atributos, etiquetas o jerarquía, las consultas de expresiones XPath proporcionan una sintaxis sólida y fácil de entender. Para los desarrolladores acostumbrados a trabajar con LINQ en C#, las consultas LINQ ofrecen una sintaxis de consulta familiar que facilita una integración fluida con otros componentes .NET.

Primeros pasos con HtmlAgilityPack

Configuración de HtmlAgilityPack en proyectos C

La biblioteca de clases base de HtmlAgility viene en un único paquete, que debería estar disponible en Nuget al instalarlo y puede utilizarse en el proyecto C#. Ofrece un analizador HTML y selectores CSS a partir del documento HTML y las URL HTML.

Implementación de HtmlAgilityPack en la consola y formularios de Windows

Muchos tipos de aplicaciones C#, como Windows Forms (WinForms) y la Consola de Windows, implementan HtmlAgilityPack. Aunque la aplicación varía de un marco a otro, la idea fundamental permanece constante.

Paquete de Agilidad Html C# (Cómo funciona para desarrolladores): Figura 1 - Buscar HtmlAgilityPack utilizando NuGet Package Manager e instalarlo

HtmlAgilityPack c# Ejemplo

Una de las herramientas más importantes con las que cuenta el desarrollador de C# para navegar, procesar y trabajar con documentos HTML es HTML Agility Pack (HAP). La extracción de datos de páginas HTML es más fácil gracias a su API de fácil uso, que funciona como un árbol organizado de elementos. Examinemos un sencillo ejemplo de código para demostrar cómo utilizarlo.

using HtmlAgilityPack;

//  Cargar contenido HTML desde un archivo o URL
HtmlWeb web = new HtmlWeb();
var doc = web.Load("https://ironpdf.com/");

//  Seleccionar nodos html específicos y analizar la cadena html
HtmlNodeCollection nodes = doc.DocumentNode.SelectNodes("//h1[@class='product-homepage-header product-homepage-header--ironpdf']");

//  Iterar por los nodos seleccionados y extraer el contenido
foreach (HtmlNode node in nodes)
{
    Console.WriteLine(node.InnerText);
}
Console.ReadKey();
using HtmlAgilityPack;

//  Cargar contenido HTML desde un archivo o URL
HtmlWeb web = new HtmlWeb();
var doc = web.Load("https://ironpdf.com/");

//  Seleccionar nodos html específicos y analizar la cadena html
HtmlNodeCollection nodes = doc.DocumentNode.SelectNodes("//h1[@class='product-homepage-header product-homepage-header--ironpdf']");

//  Iterar por los nodos seleccionados y extraer el contenido
foreach (HtmlNode node in nodes)
{
    Console.WriteLine(node.InnerText);
}
Console.ReadKey();
Imports HtmlAgilityPack

'  Cargar contenido HTML desde un archivo o URL
Private web As New HtmlWeb()
Private doc = web.Load("https://ironpdf.com/")

'  Seleccionar nodos html específicos y analizar la cadena html
Private nodes As HtmlNodeCollection = doc.DocumentNode.SelectNodes("//h1[@class='product-homepage-header product-homepage-header--ironpdf']")

'  Iterar por los nodos seleccionados y extraer el contenido
For Each node As HtmlNode In nodes
	Console.WriteLine(node.InnerText)
Next node
Console.ReadKey()
VB   C#

En este ejemplo, cargamos material de nodos HTML desde una URL utilizando HTML Agility Pack. A continuación, el HTML se carga en el var doc para su análisis y manipulación. Para extraer el contenido, el programa identifica primero el nodo raíz del documento HTML y, a continuación, se dirige específicamente a los nodos del documento mediante consultas XPath. En el código anterior, seleccionamos específicamente elementos div con la clase producto-página-de-casa-cabecera de la cadena de datos HTML, y luego el texto interior de cada nodo seleccionado se imprime en la consola.

Paquete de Agilidad Html C# (Cómo funciona para desarrolladores): Figura 2 - Texto extraído de la recuperación del texto interno de la clase product-homepage-header

Operaciones de HtmlAgilityPack

Transformación HTML

Los desarrolladores pueden realizar varias transformaciones y manipulaciones de textos HTML utilizando el paquete HTML Agility. Esto cubre operaciones como añadir, eliminar o cambiar nodos de texto, elementos y atributos, además de reorganizar la jerarquía DOM del documento HTML.

Extensibilidad

Como HAP está pensado para ser ampliable, los programadores pueden añadir nuevas características y comportamientos para aumentar su funcionalidad. Utilizando la API suministrada, los desarrolladores pueden diseñar sus propios analizadores, filtros o manipuladores HTML para adaptar HAP a sus necesidades y casos de uso particulares.

Rendimiento y eficacia

Los algoritmos y las estructuras de datos de HTML Agility Pack, ajustados para ofrecer velocidad y eficacia, pueden manejar bien textos HTML de gran tamaño. Garantiza un análisis sintáctico y una manipulación del contenido HTML rápidos y con capacidad de respuesta reduciendo la utilización de memoria y la sobrecarga de procesamiento.

Integración de HtmlAgilityPack con IronPdf

Uso de IronPDF con HtmlAgilityPack

Las posibilidades de gestión de documentos y creación de informes son infinitas cuando HTML Agility Pack y IronPDF se combinan. Mediante el uso de HTML Agility Pack para el análisis sintáctico de HTML y IronPDF para la conversión de PDF, los desarrolladores pueden automatizar sin esfuerzo la creación de documentos PDF a partir de material dinámico en línea. Para saber más sobre el IronPDF documentación, consulte aquí.

Instalar IronPDF

  • Inicie el proyecto de Visual Studio.
  • Seleccione "Herramientas" > "Gestor de paquetes NuGet" > "Consola del gestor de paquetes".
  • Introduzca este comando en la consola del gestor de paquetes:
Install-Package IronPdf
  • Como alternativa, puede utilizar NuGet Package Manager for Solutions para instalar IronPDF.
  • Se puede navegar por los resultados de la búsqueda del paquete IronPDF, elegirlo y, a continuación, hacer clic en el botón "Instalar". Visual Studio se encargará de la instalación y descarga por ti.

    Paquete de Agilidad Html C# (Cómo Funciona Para Desarrolladores): Figura 3 - Instale IronPDF utilizando el Gestor de Paquetes NuGet para Solución buscando IronPdf en la barra de búsqueda del Gestor de Paquetes NuGet, luego seleccione el proyecto y haga clic en el botón Instalar.

  • El paquete IronPDF y cualquier dependencia necesaria para su proyecto serán instalados por NuGet.
  • IronPDF se puede utilizar para su proyecto después de la instalación.

Instalación a través del sitio web de NuGet

Para obtener más información sobre las características, compatibilidad y otras opciones de descarga de IronPDF, consulte su página en https://www.nuget.org/packages/IronPdf en el sitio web de NuGet.

Utilizar DLL para instalar

Como alternativa, puede utilizar el archivo DLL de IronPDF para integrarlo directamente en su proyecto. Haga clic aquí enlace para obtener el archivo ZIP que contiene la DLL. Una vez descomprimida, incorpora la DLL a tu proyecto.

Aplicación de la lógica

Al integrar las características de ambas bibliotecas, HTML Agility Pack (HAP) y IronPDF pueden implementarse en C# para leer información HTML y producir documentos PDF sobre la marcha. A continuación se enumeran los pasos para la implementación, junto con un código de ejemplo que recorre cada uno de ellos:

  1. Cargar contenido HTML utilizando HTML Agility Pack: Para cargar material HTML desde una fuente, como un archivo, una cadena o una URL, utilice HTML Agility Pack. En esta fase, se analiza el documento HTML y se crea un objeto de documento HTML manipulable.
  2. Extraer contenido deseado: Para elegir y extraer contenido particular del documento HTML, utilice el Paquete de Agilidad HTML junto con consultas XPath o LINQ. Esto podría implicar la elección de elementos en función de sus propiedades, etiquetas o estructura jerárquica.
  3. Convertir HTML a PDF utilizando IronPDF: Para crear un documento PDF a partir del contenido HTML recuperado, utilice IronPDF. IronPDF convierte material HTML a formato PDF con facilidad manteniendo el estilo y la maquetación.
  4. Opcional: Personalizar la salida PDF: Utilice IronPDF para añadir encabezados, pies de página, numeración de páginas y otros componentes dinámicos para personalizar la salida PDF según sea necesario. Este paso mejora el aspecto y la facilidad de uso del documento PDF resultante.
  5. Guardar o transmitir documento PDF: El documento PDF creado puede transmitirse directamente al cliente o al navegador para su descarga, o puede guardarse en un archivo. IronPDF ofrece formas de guardar archivos PDF en diferentes flujos de salida.
using HtmlAgilityPack;        
StringBuilder htmlContent=new StringBuilder();

//  Cargar contenido HTML desde un archivo o URL
HtmlWeb web = new HtmlWeb();
HtmlDocument doc = web.Load("https://ironpdf.com/");
//  Seleccionar elementos específicos mediante XPath o LINQ
HtmlNodeCollection nodes = doc.DocumentNode.SelectNodes("//h1[@class='product-homepage-header product-homepage-header--ironpdf']");

//  Iterar por los nodos seleccionados y extraer el contenido
foreach (HtmlNode node in nodes)
{
    htmlContent.Append(node.OuterHtml);
    Console.WriteLine(node.InnerText);
}
//  Convertir contenido HTML a PDF con IronPDF
var Renderer = new IronPdf.HtmlToPdf();
var PDF = Renderer.RenderHtmlAsPdf(htmlContent.ToString());
//  Guardar PDF en archivo
PDF.SaveAs("output.pdf");
Console.WriteLine("PDF generated successfully!");
Console.ReadKey();
using HtmlAgilityPack;        
StringBuilder htmlContent=new StringBuilder();

//  Cargar contenido HTML desde un archivo o URL
HtmlWeb web = new HtmlWeb();
HtmlDocument doc = web.Load("https://ironpdf.com/");
//  Seleccionar elementos específicos mediante XPath o LINQ
HtmlNodeCollection nodes = doc.DocumentNode.SelectNodes("//h1[@class='product-homepage-header product-homepage-header--ironpdf']");

//  Iterar por los nodos seleccionados y extraer el contenido
foreach (HtmlNode node in nodes)
{
    htmlContent.Append(node.OuterHtml);
    Console.WriteLine(node.InnerText);
}
//  Convertir contenido HTML a PDF con IronPDF
var Renderer = new IronPdf.HtmlToPdf();
var PDF = Renderer.RenderHtmlAsPdf(htmlContent.ToString());
//  Guardar PDF en archivo
PDF.SaveAs("output.pdf");
Console.WriteLine("PDF generated successfully!");
Console.ReadKey();
Imports HtmlAgilityPack
Private htmlContent As New StringBuilder()

'  Cargar contenido HTML desde un archivo o URL
Private web As New HtmlWeb()
Private doc As HtmlDocument = web.Load("https://ironpdf.com/")
'  Seleccionar elementos específicos mediante XPath o LINQ
Private nodes As HtmlNodeCollection = doc.DocumentNode.SelectNodes("//h1[@class='product-homepage-header product-homepage-header--ironpdf']")

'  Iterar por los nodos seleccionados y extraer el contenido
For Each node As HtmlNode In nodes
	htmlContent.Append(node.OuterHtml)
	Console.WriteLine(node.InnerText)
Next node
'  Convertir contenido HTML a PDF con IronPDF
Dim Renderer = New IronPdf.HtmlToPdf()
Dim PDF = Renderer.RenderHtmlAsPdf(htmlContent.ToString())
'  Guardar PDF en archivo
PDF.SaveAs("output.pdf")
Console.WriteLine("PDF generated successfully!")
Console.ReadKey()
VB   C#

Visite aquí para obtener más información sobre el ejemplo de código.

Paquete de Agilidad Html C# (Cómo funciona para desarrolladores): Figura 4 - Página de inicio de IronPDF

A continuación se muestra el resultado de la ejecución:

Ejemplo de salida del código anterior

Conclusión

Tanto si analizan datos HTML como si crean informes PDF, los desarrolladores pueden gestionar y modificar el material de los documentos con facilidad gracias a la perfecta integración de HTML Agility Pack e IronPDF en C#. Los desarrolladores pueden automatizar con facilidad y precisión las operaciones relacionadas con los documentos combinando las funciones de producción de PDF de IronPDF con las capacidades de análisis sintáctico de HTML Agility Pack. La combinación de estas dos bibliotecas proporciona una sólida solución de gestión de documentos en C#, independientemente de si está creando informes dinámicos o extrayendo datos de páginas web.

El paquete Lite $749 incluye una licencia perpetua, un año de mantenimiento del software y una actualización de la biblioteca. IronPDF ofrece licencias gratuitas con limitaciones temporales y de redistribución. Durante el periodo de prueba, los usuarios pueden evaluar la solución sin ver la marca de agua. Vaya a la página de licencias de IronPDF para aprender más información sobre el coste y la licencia. Para obtener más información sobre las bibliotecas de Iron Software, visite este enlace página.

< ANTERIOR
docfx C# (Cómo funciona para desarrolladores)
SIGUIENTE >
C# Continue (Cómo funciona para los desarrolladores)

¿Listo para empezar? Versión: 2024.7 recién publicada

Descarga gratuita de NuGet Descargas totales: 9,848,088 Ver licencias >
123