Saisir des méta-tags et des commentaires à l'aide de HTML Agility Pack

.net c# html-agility-pack html-parsing

Question

J'ai cherché des tutoriels sur l'utilisation de HTML Agility Pack, car il semble faire tout ce que je veux, mais il semble que pour un outil aussi puissant, il y ait peu de bruit sur Internet.

J'écris une méthode simple qui permet de récupérer n'importe quelle balise en fonction du nom:

public string[] GetTagsByName(string TagName, string Source) {
    ...
}

Cela peut être facilement fait en utilisant une expression régulière, mais nous savons tous que l’utilisation de regex pour l’analyse HTML n’est pas une bonne chose. Jusqu'à présent, j'ai le code suivant:

...
// TODO: Clear Comments (can this be done or should I use RegEx?)
HtmlDocument doc = new HtmlDocument();
doc.LoadHtml(Source);
ArrayList tags = new ArrayList();
string xpath = "//" + TagName;
foreach (HtmlTextNode node in doc.DocumentNode.SelectNodes(xpath) {
    tags.Add(node.Text);
}
return (string[])tags.ToArray(typeof(String));

J'aimerais pouvoir supprimer tous les commentaires du code HTML, puis renvoyer la balise correcte en fonction de son nom. Si possible, j'aimerais également renvoyer certaines méta-tags en fonction d'attributs, tels que robot. Je ne suis pas très bon avec xpath, donc toute aide serait utile.

Toute aide serait très appréciée.

Réponse acceptée

HtmlDocument de HtmlAgilityPack implémente IXpathNavigable , il utilise donc le moteur standard .NET XPath. Toute documentation XPath 1.0 sera applicable, surtout si elle parle de System.Xml.XPath.

"// comment ()" trouve tous les commentaires
"// meta" trouve tous les éléments "meta"

HtmlDocument a été conçu pour ressembler beaucoup à XmlDocument , ainsi des exemples et des tutoriels à ce sujet seront plus ou moins applicables.

Quelques liens MSDN:



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