Frage

Wie würde ich das HTML -Agilitätspaket verwenden, um den ersten Absatz des Textes aus dem Körper einer HTML -Datei zu erhalten? Ich erstelle ein Digg Style Link -Einreichungswerkzeug und möchte den Titel und den ersten Absatz des Textes erhalten. Der Titel ist einfach, irgendwelche Vorschläge, wie ich den ersten Absatz des Textes vom Körper bekommen könnte? Ich denke, es könnte je nach Seite innerhalb von P oder Div liegen.

War es hilfreich?

Lösung

Ist das HTML, das Sie kontrollieren? Wenn ja, können Sie dem p einen Ausweis oder eine Klasse geben und sie über finden

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

Bearbeiten: Da Sie die HTML nicht kontrollieren, funktioniert die folgende möglicherweise. Es braucht alle htmltextnodes und versucht, eine Textgruppe zu finden, die größer ist als der angegebene Schwellenwert. Es ist alles andere als perfekt, könnte aber Sie in die richtige Richtung bringen.

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;
}

Andere Tipps

Das Agility Pack verwendet XPath, um die HTML -Last abzufragen. Sie verwenden einfach eine einfache XPath -Anweisung. Etwas wie...

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

HtmlNodeCollection firstParagraph = htmldoc.DocumentNode.SelectNodes("//p[1]");
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top