2017-06-14 40 views
2

我想製作一個控制檯應用程序,用於返回他們輸入頻道時的用戶數量。我現在有它從Console.ReadLine()下載搜索頁面作爲html。這會返回一個成功的html頁面,因爲我添加了一個.Save來查看下載是否有任何輸出。但是,當使用xcode刮取html時,它會返回null。我曾多次嘗試使用Google Chrome副本xcode,但都沒有運氣。C#&HTML敏捷包 - 返回空

這裏是我到目前爲止的代碼:

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放入靜態類中! –