Pack d'agilité HTML - Obtenir le résumé de la page

html html-agility-pack parsing

Question

Comment utiliser le Pack d'agilité HTML pour obtenir le premier paragraphe du texte à partir du corps d'un fichier HTML. Je construis un outil de soumission de liens de style DIGG et je souhaite obtenir le titre et le premier paragraphe du texte. Le titre est facile, des suggestions pour obtenir le premier paragraphe du texte du corps? Je suppose que cela pourrait être dans P ou DIV en fonction de la page.

Réponse acceptée

Est-ce que c'est le HTML que vous contrôlez? Si oui, vous pouvez donner au p un identifiant ou une classe et le trouver via

//p[@id=\"YOUR ID\"] or //p[@class=\"YOUR CLASS\"]

EDIT: Puisque vous ne contrôlez pas le code HTML, peut-être que le texte ci-dessous fonctionnera. Il utilise tous les HtmlTextNodes et essaie de trouver un groupe de texte supérieur au seuil spécifié. C'est loin d'être parfait, mais cela pourrait vous faire avancer dans la bonne direction.

String summary = FindSummary(page.DocumentNode);

private const int THRESHOLD = 50;
private String FindSummary(HtmlAgilityPack.HtmlNode node) {
    foreach (HtmlAgilityPack.HtmlNode childNode in node.ChildNodes) {
        if (childNode.GetType() == typeof(HtmlAgilityPack.HtmlTextNode)) {
            if (childNode.InnerText.Length >= THRESHOLD) {
                return childNode.InnerText;
            }
        }

        String summary = FindSummary(childNode);
        if (summary.Length >= THRESHOLD) {
            return summary;
        }
    }

    return String.Empty;
}

Réponse populaire

Le pack d'agilité utilise xpath pour interroger la charge html, il suffit d'utiliser une simple instruction xpath Quelque chose comme...

HtmlDocument htmldoc = new HtmlDocument();
htmldoc.LoadHtml(content);

HtmlNodeCollection firstParagraph = htmldoc.DocumentNode.SelectNodes("//p[1]");


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