Importar datos de la tabla HTML a DataTable en C #

c# datatable html html-agility-pack

Pregunta

Quería importar algunos datos de la tabla HTML (aquí hay un enlace http://road2paris.com/wp-content/themes/roadtoparis/api/generated_table_august.html ) y mostrar las primeras 16 personas en DataGridView en mi aplicación de formulario. De lo que he leído, la mejor manera de hacerlo es usar HTML Agility Pack, así que lo descargué e incluí en mi proyecto. Entiendo que lo primero que debe hacer es cargar el contenido del archivo html. Este es el código que solía hacer:

        string htmlCode = "";
        using (WebClient client = new WebClient())
        {
            client.Headers.Add(HttpRequestHeader.UserAgent, "AvoidError");
            htmlCode = client.DownloadString("http://road2paris.com/wp-content/themes/roadtoparis/api/generated_table_august.html");
        }
        HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();

        doc.LoadHtml(htmlCode);

Y luego me estancé. No sé cómo llenar mi datatable con datos de la tabla html. He intentado muchas soluciones diferentes pero nada parece funcionar correctamente. Me alegraría si alguien pudiera ayudarme con eso.

Respuesta aceptada

HtmlDocument doc = new HtmlDocument();
doc.LoadHtml(htmlCode);
var headers = doc.DocumentNode.SelectNodes("//tr/th");
DataTable table = new DataTable();
foreach (HtmlNode header in headers)
    table.Columns.Add(header.InnerText); // create columns from th
// select rows with td elements 
foreach (var row in doc.DocumentNode.SelectNodes("//tr[td]")) 
    table.Rows.Add(row.SelectNodes("td").Select(td => td.InnerText).ToArray());

Necesitará la biblioteca HTML Agility Pack para usar este código.



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