2017-05-29 1 views
0

J'ai ce code:obtenir des URL dans une page HTML avec HTML Agility Pack de

foreach (HtmlNode node in hd.DocumentNode.SelectNodes("//div[@class='compTitle options-toggle']//a")) 
    { 
     string s=("node:" + node.GetAttributeValue("href", string.Empty)); 
    } 

Je veux urls dans les balises comme ceci:

<div class="compTitle options-toggle"> 

    <a class=" ac-algo fz-l ac-21th lh-24" href="http://www.bestbuy.com"> 
       <b>Huawei</b> Products - Best Buy 
    </a> 
</div> 

Je veux "http://www.bestbuy.com" et "Huawei Produits - Best Buy"

que dois-je faire? Est-ce que mon code est correct?

+0

'mon code correct' - pourquoi vous ne pouvez pas vérifier si votre code est correct? –

+0

il ne me renvoie pas l'URL – mary

+1

alors vous devriez connaître la réponse à la question * "Est-ce que mon code est correct?" * –

Répondre

1

ceci est un exemple de code de travail

 var document = new HtmlDocument(); 
     document.LoadHtml("<div class=\"compTitle options-toggle\"><a class=\" ac-algo fz-l ac-21th lh-24\" href=\"http://www.bestbuy.com\"><b>Huawei</b> Products - Best Buy</a></div>"); 

     var tags = document.DocumentNode.SelectNodes("//div[@class='compTitle options-toggle']//a").ToList(); 

     foreach (var tag in tags) 
     { 
      var link = tag.Attributes["href"].Value; // http://www.bestbuy.com 
      var text = tag.InnerText; // Huawei Products - Best Buy 
     } 
1

La fermeture guillemet devrait fixer la sélection (cela a fonctionné pour moi).

Obtenez le texte brut comme

string contentText = node.InnerText; 

ou ayant le mot Huawei en gras, comme ceci:

string contentHtml = node.InnerHtml;