【问题标题】:Scraping table data with htmlagility pack使用 html 敏捷包抓取表数据
【发布时间】:2014-03-20 07:14:19
【问题描述】:

我有一张如下表。我想抓取该表每一行的第 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");
  }

如何从该表中获取第一列和第四列的数据???

【问题讨论】:

  • 请不要在问题标题中包含有关所用语言的信息,除非没有它就没有意义。标记用于此目的。

标签: c# html-agility-pack


【解决方案1】:
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();

【讨论】:

    【解决方案2】:

    这听起来可能有点矫枉过正,但我​​认为在这种情况下使用库会更好。只是为了维护更好。

    看看使用CsQuery 有多容易

    [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);
            }
        }
    
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多