2017-09-27 20 views
0

Je dois analyser un site et je sais où trouver l'élément que je cherche: c'est un span avec class="metadata_with_icon-tags-primary_tag".HtmlAgilityPack ne peut pas trouver l'élément

Mon code C#:

var page = new HtmlWeb().Load(url).DocumentNode.Descendants("span").Where(d => d.Attributes.Contains("class") && d.Attributes["class"].Value.Contains("metadata_with_icon-tags-primary_tag")); 

article que j'ai besoin: enter image description here

Répondre

0

Essayez cette

HtmlWeb website = new HtmlWeb(); 
      var html = website.Load("https://genius.com/Eminem-space-bound-lyrics").DocumentNode.InnerHtml; 

      Regex rgx = new Regex(@"<script\b[^>]*>([\s\S]*?)<\/script>", RegexOptions.IgnoreCase); 
      var matches = rgx.Matches(html); 
      var g = matches[14].Value; 

      Regex regex = new Regex(
       @"(\[{.*}\])", 
       RegexOptions.Multiline 
      ); 

      Match match = regex.Match(g); 
      var json = match.Value; 
+0

'content' est nul – SmiLe

+0

@SmiLe J'ai vérifié votre lien dans mon code de test et j'ai trouvé que HtmlAgilityPack renvoyait une page html différente puis un navigateur et qu'il ne contenait pas" metadata_with_icon-tags-primary_tag ". Pour autant que je comprenne que vous avez besoin de données 'Genre' Pack nous a retourné html où toutes les données stockées dans JS.Vous pouvez le vérifier par débogage.Vous ne pouvez pas analyser javascript avec HTML Agility Pack, il ne supporte que l'analyse HTML. Je vais analyser le javascript avec une autre méthode (regex, js grammar, etc.) – Shadrix

+0

@Smile J'ai mis à jour ma réponse, j'espère que cela vous sera utile – Shadrix

0

Pour obtenir votre span avec class="metadata_with_icon-tags-primary_tag":

HtmlNode node = htmlDoc.DocumentNode.SelectSingleNode("//span[@class='metadata_with_icon-tags-primary_tag']"); 
+0

'node' est null – SmiLe

+0

Votre fichier est-il correctement chargé? – krlzlx

+0

Oui, si j'essaie d'obtenir une classe supérieure je l'ai obtenu Exemple: je peux obtenir 'song_metadata' – SmiLe