2

我想逐行从 HTMLTable 中提取数据。但是我在分隔行中的列时遇到了问题。我在下面使用的代码在一行中为我提供了每个单元格。但我希望每一行都在 1 行中,然后是另一行。我怎样才能做到这一点?

HtmlNode table = doc.DocumentNode.SelectSingleNode("//table[" + tableCounter + "]");
foreach (var cell in table.SelectNodes(".//tr/td"))
{

    string someVariable = cell.InnerText;
    ReportFileWriter(someVariable);

}
tableCounter++;

这是我从这段代码中得到的输出:

当前输出

原来的表格是这样的:

原始 Html 表

我想要的输出是列之间有空格:

所需的输出

4

1 回答 1

1

由于我不知道您的具体网站,我使用以下代码来解析

html表。

您需要安装 Nuget -> HtmlAgilityPack。代码:

            WebClient webClient = new WebClient();
            string page = webClient.DownloadString("http://www.mufap.com.pk/payout-report.php?tab=01");

            HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();
            doc.LoadHtml(page);

            List<List<string>> table = doc.DocumentNode.SelectSingleNode("//table[@class='mydata']")
                        .Descendants("tr")
                        .Skip(1)
                        .Where(tr => tr.Elements("td").Count() > 1)
                        .Select(tr => tr.Elements("td").Select(td => td.InnerText.Trim()).ToList())
                        .ToList();
             string result = string.Empty;
        foreach (var item in table[0])
        {
            result = result + "        " + item;
        }
        Console.WriteLine(result);

网站第一行:

在此处输入图像描述

你会得到的结果: 在此处输入图像描述

于 2019-12-03T02:54:02.940 回答