2012-11-21 1 views
2

J'ai un code source sur une page Web que je souhaite extraire (je l'ai réduit exactement ce qui est pertinent ici:Obtenir des données spécifiques de la page Web en utilisant uniquement les éléments de classe

<div class="sideInfoPlayer"> 
<a class="signLink" href="spieler.php?uid=12345" title="Profile"> 
    <span class="wrap">Wagamama</span> 
</a> 

Maintenant, le truc Je veux que le mot Wagamama apparaisse dans une boîte de message, mais ce mot change à chaque page de ce site, donc j'ai besoin de cet élément, mais il n'y a pas d'identifiant sur cette page. classer "sideInfoPlayer" d'abord, puis trouver la classe "wrap" dans le bloc de la classe précédente

J'ai écrit ci-dessous pour obtenir le premier mais je ne sais pas w comment aborder le second et ensuite obtenir la valeur souhaitée.

 HtmlElementCollection col = webBrowser1.Document.GetElementsByTagName("div"); 
     foreach (HtmlElement element in col) 
     { 
      string cls = element.GetAttribute("className"); 
      if (String.IsNullOrEmpty(cls) || !cls.Equals("sideInfoPlayer")) 
       continue; 
     } 

J'espère que vous pouvez aider à me décoller sur celui-ci.

Répondre

0

Vous avez de meilleures options. Regardez http://htmlagilitypack.codeplex.com/

Et ici: How can i parse html string

D'abord, vous aurez besoin d'ajouter une référence à la bibliothèque HtmlAgilityPack en la téléchargeant manuellement ou avec gestionnaire de paquets NuGet.

// loading html into HtmlDocument 
var doc = new HtmlWeb().Load("http://website.com/mypage"); 
// walking through all nodes of interest 
foreach (var node in doc.DocumentNode.SelectNodes("//div[@class='sideInfoPlayer']/span[@class='wrap']")) 
{ 
    // here is your text: node.InnerText 
} 

//div[@class='sideInfoPlayer']/span[@class='wrap'] est appelé Xpath Expression et celui-ci signifie littéralement « me faire tous les éléments span class = wrap qui sont des enfants de div élément avec class = sideInfoPlayer.

Je n'ai pas testé, mais il devrait fonctionner

+0

Salut Anri, Il vient de gagner,.. le travail t pour moi juste pour être clair, je suis un peu nouveau pour cette C# comme je l'ai utilisé pour coder en VB beaucoup avant et essayer ma main à C#. Serait-ce trop demander de me montrer comment dans un morceau de code pour que je puisse comprendre les manipulations et je vais m'adapter à mes besoins (j'espère). Cordialement. – touyets

+0

@ user1842134 a mis à jour ma réponse – Anri

+0

Fantastique. Je vous remercie! – touyets

Questions connexes