AYUDA .NET

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

Publicado en 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 esta entrada veremos cómo conectar IronPDF con HTML Agility Pack. 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 debe estar disponible en NuGet al instalarlo y puede utilizarse en el proyecto de 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;

// Load HTML content from a file or URL
HtmlWeb web = new HtmlWeb();
var doc = web.Load("https://ironpdf.com/");

// Select specific html nodes and parse html string
HtmlNodeCollection nodes = doc.DocumentNode.SelectNodes("//h1[@class='product-homepage-header product-homepage-header--ironpdf']");

// Iterate through selected nodes and extract content
foreach (HtmlNode node in nodes)
{
    Console.WriteLine(node.InnerText);
}
Console.ReadKey();
using HtmlAgilityPack;

// Load HTML content from a file or URL
HtmlWeb web = new HtmlWeb();
var doc = web.Load("https://ironpdf.com/");

// Select specific html nodes and parse html string
HtmlNodeCollection nodes = doc.DocumentNode.SelectNodes("//h1[@class='product-homepage-header product-homepage-header--ironpdf']");

// Iterate through selected nodes and extract content
foreach (HtmlNode node in nodes)
{
    Console.WriteLine(node.InnerText);
}
Console.ReadKey();
Imports HtmlAgilityPack

' Load HTML content from a file or URL
Private web As New HtmlWeb()
Private doc = web.Load("https://ironpdf.com/")

' Select specific html nodes and parse html string
Private nodes As HtmlNodeCollection = doc.DocumentNode.SelectNodes("//h1[@class='product-homepage-header product-homepage-header--ironpdf']")

' Iterate through selected nodes and extract content
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 yIronPDF para la conversión de PDF se combinan. Mediante el uso de HTML Agility Pack para el análisis sintáctico de HTML yDocumentación de 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.

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 funciones, la compatibilidad y otras opciones de descarga de IronPDF, consulte su sitio webInformación sobre el paquete NuGet de 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íDescarga de IronPDF DLL 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();

// Load HTML content from a file or URL
HtmlWeb web = new HtmlWeb();
HtmlDocument doc = web.Load("https://ironpdf.com/");
// Select specific elements using XPath or LINQ
HtmlNodeCollection nodes = doc.DocumentNode.SelectNodes("//h1[@class='product-homepage-header product-homepage-header--ironpdf']");

// Iterate through selected nodes and extract content
foreach (HtmlNode node in nodes)
{
    htmlContent.Append(node.OuterHtml);
    Console.WriteLine(node.InnerText);
}
// Convert HTML content to PDF using IronPDF
var Renderer = new IronPdf.HtmlToPdf();
var PDF = Renderer.RenderHtmlAsPdf(htmlContent.ToString());
// Save PDF to file
PDF.SaveAs("output.pdf");
Console.WriteLine("PDF generated successfully!");
Console.ReadKey();
using HtmlAgilityPack;        
StringBuilder htmlContent = new StringBuilder();

// Load HTML content from a file or URL
HtmlWeb web = new HtmlWeb();
HtmlDocument doc = web.Load("https://ironpdf.com/");
// Select specific elements using XPath or LINQ
HtmlNodeCollection nodes = doc.DocumentNode.SelectNodes("//h1[@class='product-homepage-header product-homepage-header--ironpdf']");

// Iterate through selected nodes and extract content
foreach (HtmlNode node in nodes)
{
    htmlContent.Append(node.OuterHtml);
    Console.WriteLine(node.InnerText);
}
// Convert HTML content to PDF using IronPDF
var Renderer = new IronPdf.HtmlToPdf();
var PDF = Renderer.RenderHtmlAsPdf(htmlContent.ToString());
// Save PDF to file
PDF.SaveAs("output.pdf");
Console.WriteLine("PDF generated successfully!");
Console.ReadKey();
Imports HtmlAgilityPack
Private htmlContent As New StringBuilder()

' Load HTML content from a file or URL
Private web As New HtmlWeb()
Private doc As HtmlDocument = web.Load("https://ironpdf.com/")
' Select specific elements using XPath or LINQ
Private nodes As HtmlNodeCollection = doc.DocumentNode.SelectNodes("//h1[@class='product-homepage-header product-homepage-header--ironpdf']")

' Iterate through selected nodes and extract content
For Each node As HtmlNode In nodes
	htmlContent.Append(node.OuterHtml)
	Console.WriteLine(node.InnerText)
Next node
' Convert HTML content to PDF using IronPDF
Dim Renderer = New IronPdf.HtmlToPdf()
Dim PDF = Renderer.RenderHtmlAsPdf(htmlContent.ToString())
' Save PDF to file
PDF.SaveAs("output.pdf")
Console.WriteLine("PDF generated successfully!")
Console.ReadKey()
VB   C#

VisiteUtilización de IronPDF para la conversión 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 IronPDFInformación sobre licencias para saber más sobre el coste y la licencia. Para obtener más información sobre las bibliotecas de Iron Software, visite su página webPágina de información del producto.

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

¿Listo para empezar? Versión: 2024.12 acaba de salir

Descarga gratuita de NuGet Descargas totales: 11,622,374 Ver licencias >