2016-03-06 81 views
-2

我无法添加html代码,因为它非常非常大! 5卷以上。请跟随htmlWeb.load()中的链接。 我看了这段代码已经2个小时了,我无法弄清楚什么是错的。Html Agility Pack xpath IEnumerable

HtmlWeb htmlWeb = new HtmlWeb {OverrideEncoding = Encoding.Default}; 
HtmlAgilityPack.HtmlDocument document = htmlWeb.Load("https://www.parimatch.com/en/sport/futbol/germanija-bundesliga"); 
var matches = document.DocumentNode.SelectNodes("//tr[@class='bk']"). 
    Select(tr => new FootballMatch() 
    { 
     Number = string.Join(" ", tr.SelectNodes("./td[1]//text()[normalize-space()]").Select(t =>t.InnerText)), 
     Time = string.Join(" ", tr.SelectNodes("./td[2]//text()[normalize-space()]").Select(t => t.InnerText)), 
     Teams = string.Join(" ", tr.SelectNodes("./td[3]//text()[normalize-space()]").Select(t => t.InnerText)), 
     Allowance = string.Join(" ", tr.SelectNodes("./td[4]//text()[normalize-space()]").Select(t => t.InnerText)), 
     CoefficientAllowance = string.Join(" ", tr.SelectNodes("./td[5]//text()[normalize-space()]").Select(t => t.InnerText)), 
     Total = tr.SelectSingleNode("./td[7]//text()[normalize-space()]").InnerText, 
     P1 = tr.SelectSingleNode("./td[10]//text()[normalize-space()]").InnerText, 
     X = tr.SelectSingleNode("./td[11]//text()[normalize-space()]").InnerText, 
     /*P2 = tr.SelectSingleNode("./td[12]//text()[normalize-space()]").InnerText, 
     P1X = tr.SelectSingleNode("./td[13]//text()[normalize-space()]").InnerText, 
     P1P2 = tr.SelectSingleNode("./td[14]//text()[normalize-space()]").InnerText, 
     P2X = tr.SelectSingleNode("./td[15]//text()[normalize-space()]").InnerText*/ 
    }); 

P2,P1X,P1P2,P2X总是空。 并且可以使这个代码更整洁?

当你点击一个事件时,出现一个弹出菜单,这个数据也被读取,但我不需要这个。我如何禁用此功能?

+0

这是不可能的!这些字段是相同的,但一些阅读,其他人不知道! – andrey1567

+0

你会感到惊讶!字段完全相同,但是在11之后不能被读取! – andrey1567

回答

0

这也不是最漂亮的。但它的工作。仍然需要完成某些细胞的分类工作。由于某些<td>包含<br>来分隔行。希望这可以帮助你继续前进。

 string xpath = "//tr[@class='bk']"; 
     HtmlNodeCollection matches = htmlDoc.DocumentNode.SelectNodes(xpath); 

     List<List<string>> footballMatches = new List<List<string>>(); 

     foreach (HtmlNode x in matches) 
     { 
      List<string> mess = new List<string>(); 
      HtmlNodeCollection hTC = x.SelectNodes("./td"); 
      if (hTC.Count > 15) 
      { 
       for (int i = 0; i < 15; i++) 
       { 
        if (i != 5) 
        { 
         mess.Add(hTC[i].InnerText); 
        } 
       } 
      } 
      footballMatches.Add(mess); 
     }