C# 使用htmlagility pack删除表数据

C# 使用htmlagility pack删除表数据,c#,html-agility-pack,C#,Html Agility Pack,我有一张像下面这样的桌子。我想刮去表中每一行的第1列和第4列 表的结构如下所示: 每个数据都有一个b标签 我试过这样的东西。但是我没有得到我的结果 HtmlWeb web = new HtmlWeb(); HtmlAgilityPack.HtmlDocument doc = web.Load("http://www.islam4you.info/contents/names/ma.php"); HtmlNodeCollection nodes = doc.Docum

我有一张像下面这样的桌子。我想刮去表中每一行的第1列和第4列

表的结构如下所示:

每个数据都有一个
b
标签

我试过这样的东西。但是我没有得到我的结果

 HtmlWeb web = new HtmlWeb();
 HtmlAgilityPack.HtmlDocument doc = web.Load("http://www.islam4you.info/contents/names/ma.php");
 HtmlNodeCollection nodes = doc.DocumentNode.SelectNodes("//b");


 double k = 5;

 try
 {
     foreach (HtmlNode n in nodes)
     {
                
        if (k != 0)
        {
          if ((k % 5) == 1)
          {
              link = n.InnerHtml;
              nam_list.Add(link);
          }

          if ((k % 5) == 4)
          {

              link = n.InnerHtml;
              meng_list.Add(link);
          }
         }
         k++;
       }
  }
  catch (NullReferenceException)
  {
       MessageBox.Show("No link found");
  }

如何从该表中获取第1列和第4列的数据?

这听起来有些过分,但我认为在这种情况下使用库会更好。这只是为了更好的维护

看看它使用起来有多简单

[TestFixture]
公共类HtmlPase
{
[测试]
公开无效测试()
{
变量dom=
创建(
@“Aadam土”);
var results=dom[“表tr:nth child(1)b,表tr:nth child(5)b”];
foreach(结果中的var结果)
{
Console.WriteLine(result.InnerText);
}
}
}

请不要在问题标题中包含关于所用语言的信息,除非没有它就没有意义。标签就是为了这个目的。
[TestFixture]
public class HtmlParse
{
    [Test]
    public void Test()
    {

        var dom =
            CQ.Create(
                @"<table><tbody> <tr><td><b>Aadam</b></td></tr> <tr><td></td></tr> <tr><td></td></tr> <tr><td></td></tr> <tr><td><b>Earth</b></td></tr></tbody></table>");

        var results = dom["table tr:nth-child(1) b, table tr:nth-child(5) b"];

        foreach (var result in results)
        {
            Console.WriteLine(result.InnerText);
        }
    }

}
var table = doc.DocumentNode.SelectNodes("//table[@bordercolor='#111111'][1]")
                .Descendants("tr")
                .Select(tr => tr.Descendants("td").Select(td => td.InnerText).ToList())
                .Where(x => x.Count() == 5)
                .ToList();