2017-05-18 14 views
2

これで、HTMLアジリティパックを使用してコード内のURLからすべてのチーム名を抽出しようとしています。コンソールに出力され、複数のチームが存在します。HTMLアジリティパックを使用してHTMLファイルからデータを抽出する方法

誰かが正しい方向に私の問題を解決する方法を指すことができたら、それは素晴らしい、ありがとう。

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

ドキュメントには、class = "tournament-bracket - search-layer"のdivが1つしかありません。そのdivのすべての子を選択したいと思うかもしれません – Jason

+0

なぜAPIを使用しないのですか:http://api.challonge.com/v1 – SushiHangover

答えて

0

あなたは相当であるためにあなたのCSSセレクタを変更することができます - クロームコンソールタイプで例えば「svg.matchプレーヤーのタイトル」:jQueryの(「svg.match - プレイヤーのタイトル」)

をこれにより、ファイナルから1ラウンドまでのすべての参加者が列挙されます。つまり、最初の6(0〜5)は空白になります。そして、重複したものが処理されます。

オフトピック。個人的には、NugetからAngleSharpライブラリを入手することをお勧めします。

関連する問題