C# 使用HTML Agility数据包从网站获取多个表并将它们添加到列表中

C# 使用HTML Agility数据包从网站获取多个表并将它们添加到列表中,c#,html,html-table,html-agility-pack,C#,Html,Html Table,Html Agility Pack,我正在开发一个小程序,从网站上获取表格信息,稍后将按日期时间对这些信息进行排序 我最大的问题是,在我的函数获取网站并将其转换为字符串后,我无法找到将信息转换为列表的方法。我不断地遇到空指针错误 我试过这个: WebClient webClient = new WebClient(); string page = webClient.DownloadString("http://www.mufap.com.pk/payout- report.php?tab=01"); HtmlAgilityPa

我正在开发一个小程序,从网站上获取表格信息,稍后将按日期时间对这些信息进行排序

我最大的问题是,在我的函数获取网站并将其转换为字符串后,我无法找到将信息转换为列表的方法。我不断地遇到空指针错误

我试过这个:

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='1']")
        .Descendants("tr")
        .Skip(1)
        .Where(tr=>tr.Elements("td").Count()>1)
        .Select(tr => tr.Elements("td")
        .Select(td => td.InnerText.Trim()).ToList())
        .ToList();
我认为这与我选择的类有关,尽管表的类名为“1”,所以应该有正确的引用。当我使用

我一直在想:

System.Collections.Generic.List1[System.Collections.Generic.List1[System.String]


如果你能给我指出正确的方向,那就太好了。

如果你需要从HTML中选择第一个
Table
元素,你只需要使用
SelectSingleNode
方法。它返回查询的第一个节点,您的查询应该如下所示

doc.DocumentNode.SelectSingleNode("//table")

在您的代码中,您还向
添加了查询,其中不存在值。我从上面的评论中了解到,您认为
[class='1']
将返回第一个
元素,这是错误的,它将返回
Table
元素,该元素的
class
属性值为
1

忘记提到这是我正在使用的链接:在给定的url@RubenVardanyan那我怎么才能拿到第一张桌子呢?我对此很陌生:sSo您是指编写
class=1
时的第一个表元素吗@科林
doc.DocumentNode.SelectSingleNode("//table")