2009-12-10 6 views
10

J'essaie d'utiliser HTML Agility Pack de pour obtenir le texte de description de l'intérieur du:HTML Agilité pack

<meta name="description" content="**this is the text i want to extract and store in a string**" /> 

Et quelqu'un Stackoverflow un peu de temps il y a suggéré d'utiliser HTMLAgilityPack. Mais je ne sais pas comment l'utiliser, et la documentation de ce que j'ai trouvé (y compris les documents contenus dans les téléchargements) ont tous des liens non valides et celui-ci ne voir la documentation.

quelqu'un peut me aider s'il vous plaît résoudre ce problème?

+1

Je suis confus - avez-vous construit HtmlAgilityPack ou non? Est-ce les exemples qui ne construisent pas? ou le noyau dll? Si ce dernier, qu'avez-vous mentionné? –

+0

merci Marc. J'ai modifié ma question et supprimé cette partie pour éviter toute confusion supplémentaire. En y pensant maintenant, cette partie spécifique n'était pas vraiment relative à ma question, plutôt abit d'info pour dire pourquoi je pose la question. –

+0

J'ai été en mesure d'ajouter une référence dans mon application au fichier dll. donc je peux "utiliser" pack htmlagility. –

Répondre

16

L'utilisation est très similaire à XmlDocument; vous pouvez utiliser MSDN sur XmlDocument pour un aperçu général; vous pouvez également apprendre la syntaxe xpath (MSDN).

Exemple:

HtmlDocument doc = new HtmlDocument(); 
doc.Load(path); // or .LoadHtml(html); 
HtmlNode node = doc.DocumentNode.SelectSingleNode("//meta[@name='description']"); 
if (node != null) { 
    string desc = node.GetAttributeValue("content", ""); 
    // TODO: write desc somewhere 
} 

Le second argument de GetAttributeValue est la valeur par défaut est retourné dans le cas où l'attribut est introuvable.

+0

Quel est le deuxième argument de chaîne (le vide un) utilisé dans 'node.GetAttributeValue ("content", "");'? – Alex

+0

@AlexW - Je n'ai pas cette bibliothèque "à portée de main" pour le moment; Quel est le paramètre appelé? –

+0

Vous ne savez pas sur le nom du paramètre ... suivra le chemin de définition plus tard pour le savoir. Merci pour la réponse ici, v utile. – Alex

0

HtmlAgi chaîne publique (string url, string key) {

var Webget = new HtmlWeb(); 
    var doc = Webget.Load(url); 
    HtmlNode ourNode = doc.DocumentNode.SelectSingleNode(string.Format("//meta[@name='{0}']", key)); 

    if (ourNode != null) 
    { 


      return ourNode.GetAttributeValue("content", ""); 

    } 
    else 
    { 
     return "not fount"; 
    } 

} 
Questions connexes