2017-06-14 1 views
2

Je veux faire une application de console qui retourne combien d'abonnés ils ont quand je tape dans leur canal. Je l'ai actuellement télécharger la page de recherche en tant que html de la Console.ReadLine(). Cela renvoie une page html réussie que j'ai ajouté un. Enregistrez pour voir si le téléchargement avait une sortie. Toutefois, lors de la récupération du code HTML à l'aide de xcode, il renvoie null. J'ai essayé plusieurs fois en utilisant le xcode de Google Chrome, mais je n'ai pas eu de chance.C# & HTML Agility Pack - Retour Null

Voici le code que j'ai jusqu'à présent:

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(); 
    } 

Toute aide est appréciée des suggestions! :)

Répondre

0

C'est ce que vous avez besoin:

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

C'est le 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

Merci pour la réponse! Pour tous ceux qui utilisent cette solution, assurez-vous de mettre le HasClass dans une classe statique! –