Obtenir la valeur du 'href' à l'intérieur d'une div dans HTMLAgilityPack en C #

c# href html-agility-pack xpath

Question

J'essaie de saisir la valeur d'un "href". Le code ressemble à ceci:

          <div class="s_newsbox" style="font-size:12px; vertical-align:middle; overflow: hidden; float:left; margin:10px; margin-bottom:15px; height: 270px; width:280px; border-radius:6px; position:relative; text-align:center; padding:0px">
            <div style="background-color:#292929; background-color:rgba(0,0,0,0.8); padding:5px; padding-left:2px; padding-right:10px; width:100%; position:absolute; top:0; left:0;"><b>Samsung nx30 + zoom kit 18/55</b>
            </div>
            <a href="vendo.php?t=1395911">
              <img style="width:100%; height:100%" src="http://img1.juzaphoto.com/shared_files/uploads_mercatino/sell_1395911_small.jpg" alt="">
              <br></a>
            <div style="line-height:150%; background-color:#292929; background-color:rgba(0,0,0,0.8); padding:5px; position:absolute; bottom:0; left:0; margin-left:auto; width:100%; text-align:left">Venditore: 
              <a href="me.php?l=it&amp;p=45923"><b>Pierobob</b></a>  
              <br> Prezzo: <b>350 &euro;</b>  
              <br> Zona: <b>Bologna</b>  
              <br> 
              <a href="vendo.php?t=1395911">Leggi annuncio</a> (8 visite)
              <br>
            </div>
          </div>

Ce que j'essaie de faire est la suivante:

           var list = page.DocumentNode.SelectNodes("//div[@class='s_newsbox']");
           foreach (var obj in list)
            {
              var url = obj.SelectSingleNode(".//a").Attributes["href"].Value;

Je veux saisir la valeur 'vendo.php? T = 1395911' mais j'obtiens la valeur href d'une autre ligne, qui n'a pas de div parent avec la classe 's_newsbox'

Qu'est ce que je fais mal?

Merci!

Réponse acceptée

Vous pouvez filtrer les objets en question avec xpath plus précis tant que vous n'avez besoin d'aucun des autres nœuds de la div s_newsbox.

       var list = page.DocumentNode.SelectNodes("//div[@class='s_newsbox']/a[string-length(@href)>0]");
       foreach (var obj in list)
        {
          var url = obj.SelectSingleNode(".").Attributes["href"].Value;


Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi