2017-09-23 16 views
0

J'ai des problèmes pour trouver la valeur d'un élément. Je pense que la raison est parce que c'est seulement dans les divs et pas dans une table ou quelque chose comme ça. Je ne suis pas sûr, mais c'est ce qui est différent des exemples des autres. Ceci est mon code:Html Agility Pack DocumentNode.SelectNodes renvoie la valeur null

private async void ButtonNext_Click(object sender, EventArgs e) 
    { 
     HtmlWeb web = new HtmlWeb(); 
     var doc = await Task.Factory.StartNew(() => web.Load("https://hsreplay.net/decks/aeVbjoWFmDWILMwbMi9RCh/")); 
     var node = doc.DocumentNode.SelectNodes("//*[@id=\"mulligan - guide\"]/div/div/div[1]/div/div[4]/div/div/div[2]"); 
    } 

Le nœud var renvoie la valeur null.The Im essayant d'obtenir ici:

89,3%

Il est la valeur 89,3% Im essayant d'obtenir.

Toute aide serait grandement appréciée! Merci!

+0

Le contenu que vous essayez d'obtenir est chargé asynchron via javascript. Essayez de désactiver javascript dans le navigateur de votre choix. Ce que vous voyez avec JavaScript désactivé est ce que vous avez si vous chargez une page Web comme vous le faites. Pour autant que je sache, le HtmlAgilityPack est un puissant analyseur HTML, mais il ne restitue rien. Mais j'ai peut-être tort. – Michael

Répondre

0

Vous pourriez obtenir ce que vous voulez avec ceci. Créez une instance WebBrowser, configurez le gestionnaire d'événements DocumentCompleted (nous espérons que cela signifie que javascript et d'autres choses du même genre sont également effectuées lorsque l'événement est déclenché). Ensuite, lorsque le gestionnaire est appelé, récupérez le code source du WebBrowser (qui a été mis à jour avec optimisme par les scripts), créez un HtmlAgilityPack.HtmlDocument et lancez votre requête à ce sujet.

using(var ie = new WebBrowser()) 
{ 
    ie.DocumentCompleted += (s, args) => 
    { 
     var doc = new HtmlDocument(); 
     doc.LoadHtml(ie.DocumentText); 
     var node = doc.DocumentNode.SelectNodes("//*[@id=\"mulligan - guide\"]/div/div/div[1]/div/div[4]/div/div/div[2]"); 
    }; 
    ie.Navigate("https://hsreplay.net/decks/aeVbjoWFmDWILMwbMi9RCh/"); 
} 

pas testé

+0

Je l'ai essayé et il se plaint de "l'expéditeur". Erreur: CS0163. – Venerik

+0

Je suis assez sûr que vous êtes en mesure de résoudre cette erreur si vous lisez la description de l'erreur;) – Michael