2017-06-14 4 views
2

自分のチャンネルを入力したときに加入者数を返すコンソールアプリケーションを作りたいと思います。私は現在、Console.ReadLine()からhtmlとして検索ページをダウンロードしています。これは、ダウンロードが出力されたかどうかを確認するために.Saveを追加したので、htmlページが正常に返されます。しかし、xcodeを使用してhtmlをスクラップすると、nullが返されます。私は何度もGoogle Chromeのコピーxcodeを使ってみましたが、運がなかった。C#&HTMLアジリティパック - Nullを返す

public static void GetYoutubeSubscriptions2() 
    { 
     string url = "https://www.youtube.com/results?search_query=" + Regex.Replace(Console.ReadLine(), @"\s+", "+"); 

     Console.WriteLine(url); 

     HtmlWeb web = new HtmlWeb(); 
     HtmlDocument document = web.Load(url); 
     //document.Save(path1); 

     var htmlNodes = document.DocumentNode.SelectNodes(@"//*[@id=""section - list - 231763""]/li[3]/div/div[2]/div[3]/span/span[1]"); 

     foreach (var node in htmlNodes) 
     { 
      Console.WriteLine(node.InnerText); 
     } 

     Console.ReadLine(); 
    } 

任意のヘルプ提案が高く評価されています。ここでは

は、私がこれまで持っているコードです! :)

答えて

0

これは何が必要です:

var htmlNodes = document.DocumentNode.Descendants("span").FirstOrDefault(_ => _.HasClass("yt-subscriber-count")); 

これが答えのためHasClass extenstion

public static bool HasClass(this HtmlNode node, params string[] classValueArray) 
{ 
     var classValue = node.GetAttributeValue("class", ""); 
     var classValues = classValue.Split(' '); 
     return classValueArray.All(c => classValues.Contains(c)); 
} 
+0

感謝です!このソリューションを使用している他の人は、HasClassを静的クラスに入れてください! –

関連する問題