Cómo extraer datos de una tabla HTML
Las tablas HTML se utilizan ampliamente en la web para mostrar información. La extracción de datos de tablas HTML es común en el web scraping, el análisis de datos y la automatización. Al crear analizadores, a menudo es necesario extraer datos de una tabla HTML y convertirlos a un formato estructurado, como JSON, CSV o Excel. Exploremos cómo extraer datos de una tabla HTML.
Primero, asegúrese de tener Aspose.HTML for .NET instalado en su proyecto. El proceso de instalación de esta biblioteca es bastante sencillo. Abra el administrador de paquetes NuGet, busque Aspose.HTML e instálelo. También puede utilizar el siguiente comando desde la Consola del Administrador de paquetes:
Instalar Aspose.HTML for .NET
Install-Package Aspose.HTML
Extraiga datos de una tabla HTML usando C#
Aspose.HTML for .NET
es una biblioteca sólida que proporciona un potente conjunto de herramientas para analizar y recopilar información de documentos HTML. El siguiente ejemplo muestra cómo encontrar todos los elementos <table>
en un documento HTML, extraer los datos de la tabla y generarlos en formato JSON. Digamos que una tabla en HTML contiene una lista de pruebas, donde cada prueba tiene un ID, un nombre, un comentario y un hipervínculo al contenido de la prueba. Esta es la información que queremos extraer de la tabla del siguiente ejemplo:
Código C# para extraer datos de una tabla HTML
using Aspose.Html;
using System.IO;
using System.Linq;
using System.Text.Json;
using System.Collections.Generic;
...
// Open the document from which you want to extract table data
using var document = new HTMLDocument(Path.Combine(DataDir, "chapter-9.htm"));
{
// Check if there are any table elements in the document
var tables = document.GetElementsByTagName("table");
if (tables.Any())
{
var result = new List<Dictionary<string, string>>();
//var i = 0;
foreach (var table in tables)
{
// extract data from html table
var tbodies = table.GetElementsByTagName("tbody");
foreach (var tbody in tbodies)
{
if (tbody.Children.Length > 1)
{
foreach (var row in tbody.Children)
{
if (row.HasAttribute("id"))
{
//test row
var data = new Dictionary<string, string>();
data["Id"] = row.GetAttribute("id");
if (row.Children.Length > 0)
{
var td = row.Children[0];
if (td.Children.Length > 0)
{
var element = td.Children[0].TagName == "STRONG"
? td.Children[0].Children[0]
: td.Children[0];
var href = ((HTMLAnchorElement)element).Href;
data["Href"] = href;
data["TestName"] = Path.GetFileNameWithoutExtension(href);
}
}
data["TestComment"] = string.Join(" ",
row.Children[3].TextContent
.Split(new char[0], StringSplitOptions.RemoveEmptyEntries).ToList()
.Select(x => x.Trim()));
result.Add(data);
}
}
var json = JsonSerializer.Serialize(result);
Console.WriteLine(json);
}
}
}
}
else
{
// Handle the case where no tables are found
Console.WriteLine("No tables found in the document.");
}
}
Pasos para extraer datos de una tabla HTML
Si sigue estos pasos, puede extraer datos de tablas de HTML, como hipervínculos y contenido de texto, para diversos fines, incluido el análisis de datos o la generación de informes.
- Utilice el constructor HTMLDocument() para inicializar un documento HTML. Pase la ruta del archivo HTML de origen como parámetro al constructor.
- Utilice el método
GetElementsByTagName(
"table"
) para recopilar todos los elementos<table>
. El método devuelve una lista de los elementos<table>
del documento HTML. Almacene la colección de elementos de la tabla en la variabletables
. - Utilice el método LINQ
Any()
para comprobar si hay elementos<table>
en el documento HTML. Esto garantiza que haya tablas de las que extraer datos. - Repita cada tabla que se encuentra en el documento usando un bucle
foreach
:- Utilice el método
GetElementsByTagName("tbody")
para recuperar todos los elementos<tbody>
(cuerpos de la tabla). - Dentro del bucle, itere a través de cada elemento
<tbody>
para acceder a las filas de datos obtenidos usando otro bucleforeach
. - Extraiga datos relevantes de cada fila en función de condiciones o atributos específicos.
- Después de extraer datos de todas las filas, utilice el método
JsonSerializer.Serialize()
para serializar la lista de diccionarios que contienen los datos extraídos al formato JSON.
- Utilice el método
- Utilice el método
Console.WriteLine()
para generar JSON serializado para mostrarlo en la consola. - Si el documento no contiene tablas, imprima un mensaje en la consola indicando que no se encontraron tablas.
Para obtener más información sobre la API Aspose.HTML, visite nuestra guía de documentación . Aspose.HTML for .NET es una biblioteca de análisis HTML avanzada que le permite crear, editar y convertir archivos HTML, XHTML, MD, EPUB y MHTML. La sección de documentación Data Extraction describe cómo inspeccionar, recopilar y extraer datos automáticamente de páginas web utilizando Aspose.HTML for .NET. En los artículos de esta sección, aprenderá cómo navegar por un documento HTML y realizar una inspección detallada de sus elementos, guardar un sitio web o un archivo desde una URL, extraer diferentes tipos de imágenes de sitios web y más.
Generador de tablas HTML: aplicación en línea
Aspose.HTML ofrece el Generador de tablas HTML es una aplicación en línea para crear tablas con opciones personalizables. Es gratis y claro de usar. ¡Simplemente complete todas las opciones requeridas y obtenga un resultado! El generador de tablas HTML crea automáticamente el código de la tabla HTML. Esta herramienta fue diseñada para permitirle obtener una tabla HTML requerida y ponerla en línea lo más rápido posible.
Otras características de la biblioteca C# compatibles
Utilice la biblioteca Aspose.HTML for .NET para analizar y manipular documentos basados en HTML. ¡Claro, seguro y sencillo!