2017-05-18 2 views
2

Also ich versuche, alle Team-Namen aus der URL, die im Code ist mit dem HTML-Agilität-Paket zu extrahieren, wie von jetzt nur der erste Team-Name ist an die Konsole ausgegeben und es gibt mehr als ein Team.So extrahieren Sie Daten aus einer HTML-Datei mit HTML Agility pack

Wenn mir jemand in die richtige Richtung zeigen könnte, wie ich mein Problem lösen könnte, danke.

namespace Html_Parser 
{ 
public partial class MainPage : ContentPage 
{ 
    public MainPage() 
    { 
     InitializeComponent(); 
     StartWebCrawl(); 



    } 
    private static async Task StartWebCrawl() 
    { 
     var url = "http://challonge.com/lhswaterwars17/module"; 

     var httpClient = new HttpClient(); 
     var html = await httpClient.GetStringAsync(url); 

     var htmlDocument = new HtmlDocument(); 
     htmlDocument.LoadHtml(html); 

     var divs = htmlDocument.DocumentNode.Descendants("div") 
      .Where(node => node.GetAttributeValue("class", "") 
      .Equals("tournament-bracket--search-layer")).ToList(); 

     var participants = new List<Particpants>(); 

     foreach (var div in divs) 
     { 

      var participant = new Particpants 
      { 
       TeamName = div.Descendants("div").FirstOrDefault().InnerText 

      }; 

      participants.Add(participant); 


     } 
     foreach(var name in participants) 
     { 
      Debug.WriteLine(name.TeamName); 
     } 

    } 

} 
public class Particpants 
{ 
    public string TeamName {get; set;} 

} 

} 
+0

Es gibt nur ein einzelnes div im Dokument mit class = "tournament-bracket - search-layer". Wahrscheinlich möchten Sie alle untergeordneten Elemente dieses Bereichs auswählen – Jason

+0

Warum nicht ihre API verwenden: http://api.challonge.com/v1 – SushiHangover

Antwort

0

Sie können Ihre CSS-Selektor ändern das Äquivalent zu 'svg.match - Spieler Titel' zB in einem Chrome Konsolentyp: jQuery ('svg.match - Spieler Titel')

Dies wird alle Teilnehmer von den Finalen bis Runde 1 aufzählen. Mit anderen Worten, die ersten 6 (0-5) werden leer sein. Und es werden Duplikate zu handhaben sein.

Off-Thema. Persönlich bevorzuge ich die AngleSharp-Bibliothek, die über Nuget verfügbar ist.