C#如何从HtmlTable中提取数据并排列成一行?
How to extract data from HtmlTable in C# and arrange in a row?
我想从 HTMLTable 中逐行提取数据。但是我在分隔行中的列时遇到了问题。我在下面使用的代码在一行中为我提供了每个单元格。但我希望每一行都在一行中,然后是另一行。我该怎么做?
HtmlNode table = doc.DocumentNode.SelectSingleNode("//table[" + tableCounter + "]");
foreach (var cell in table.SelectNodes(".//tr/td"))
{
string someVariable = cell.InnerText;
ReportFileWriter(someVariable);
}
tableCounter++;
这是我从这段代码得到的输出:
The Current Output
而原来的table是这样的:
The Original Html Table
我想要的输出是在列之间有空格:
The Desired Output
由于不知道你的具体网站,所以我用下面的代码解析了
html table.
您需要安装 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);
网站第一行:
您将得到的结果:
我想从 HTMLTable 中逐行提取数据。但是我在分隔行中的列时遇到了问题。我在下面使用的代码在一行中为我提供了每个单元格。但我希望每一行都在一行中,然后是另一行。我该怎么做?
HtmlNode table = doc.DocumentNode.SelectSingleNode("//table[" + tableCounter + "]");
foreach (var cell in table.SelectNodes(".//tr/td"))
{
string someVariable = cell.InnerText;
ReportFileWriter(someVariable);
}
tableCounter++;
这是我从这段代码得到的输出:
The Current Output
而原来的table是这样的:
The Original Html Table
我想要的输出是在列之间有空格:
The Desired Output
由于不知道你的具体网站,所以我用下面的代码解析了
html table.
您需要安装 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);
网站第一行:
您将得到的结果: