Импорт данных из таблицы HTML в DataTable в C #

c# datatable html html-agility-pack

Вопрос

Я хотел импортировать некоторые данные из таблицы HTML (вот ссылка http://road2paris.com/wp-content/themes/roadtoparis/api/generated_table_august.html ) и отобразить первые 16 человек в DataGridView в моем приложении Form. Из того, что я прочитал, лучший способ сделать это - использовать пакет гибкости HTML, поэтому я загрузил его и включил в свой проект. Я понимаю, что первое, что нужно сделать, - загрузить содержимое html-файла. Это код, который я использовал для этого:

        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);

И тогда я застрял. Я не знаю, как заполнить мои данные данными из таблицы html. Я пробовал много различных решений, но ничего не работает должным образом. Я был бы рад, если бы кто-нибудь мог мне помочь в этом.

Принятый ответ

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());

Для использования этого кода вам понадобится библиотека HTML Agility Pack.



Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Является ли этот КБ законным? Да, узнайте, почему
Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Является ли этот КБ законным? Да, узнайте, почему