C #의 HTML 테이블에서 DataTable으로 데이터 가져 오기

c# datatable html html-agility-pack

문제

HTML 표 ( http://road2paris.com/wp-content/themes/roadtoparis/api/generated_table_august.html 링크)에서 일부 데이터를 가져 와서 Form 응용 프로그램의 DataGridView에 처음 16 명이 표시하고 싶습니다. 가장 좋은 방법은 HTML Agility 팩을 사용하는 것이므로 다운로드하여 프로젝트에 포함 시켰습니다. 첫 번째로 할 일은 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 민첩성 팩 라이브러리가 필요합니다.



아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.
아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.