Acquisizione di meta-tag e commenti utilizzando HTML Agility Pack

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

Domanda

Ho cercato tutorial sull'utilizzo di HTML Agility Pack in quanto sembra fare tutto ciò che voglio che faccia, ma sembra che per uno strumento così potente ci sia poco rumore su Internet.

Sto scrivendo un metodo semplice che recupererà qualsiasi tag in base al nome:

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

Questo può essere fatto facilmente usando un'espressione regolare, ma sappiamo tutti che l'uso della regex per l'analisi dell'HTML non è corretto. Finora ho il seguente codice:

...
// 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));

Vorrei poter prima rimuovere tutti i commenti dall'HTML, quindi restituire il tag corretto in base al suo nome. Se possibile, vorrei anche restituire alcuni meta-tag basati su attributi, come ad esempio i robot. Non sono eccezionale con xpath, quindi qualsiasi aiuto sarebbe buono.

Qualsiasi aiuto sarebbe molto apprezzato.

Risposta accettata

HtmlDocument di HtmlAgilityPack implementa IXpathNavigable , quindi utilizza il motore .NET XPath standard. Qualsiasi documentazione XPath 1.0 sarà applicabile, specialmente se si parla di System.Xml.XPath.

"// comment ()" trova tutti i commenti
"// meta" trova tutti gli elementi "meta"

HtmlDocument è stato progettato per assomigliare molto a XmlDocument , quindi alcuni esempi e tutorial su di esso saranno in qualche modo applicabili.

Alcuni collegamenti MSDN:



Related

Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché
Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché