2 Stimmen

HTML-Agility-Pack - Seite-Zusammenfassung erhalten

Wie würde ich das HTML Agility Pack verwenden, um den ersten Absatz eines Textes aus dem Body einer HTML-Datei zu erhalten? Ich baue ein Link-Einreichungstool im Stil von DIGG und möchte den Titel und den ersten Absatz des Textes erhalten. Der Titel ist einfach, habt ihr Vorschläge, wie ich den ersten Absatz des Textes aus dem Body erhalten könnte? Ich vermute, es könnte sich innerhalb eines P oder DIV befinden, je nach Seite.

3voto

BStruthers Punkte 948

Handelst du dieses HTML? Wenn ja, könntest du dem p eine ID oder eine Klasse zuweisen und es über

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

Bearbeiten: Da du das HTML nicht kontrollierst, könnte das Folgende funktionieren. Es nimmt alle HtmlTextNodes und versucht, eine Gruppierung von Text zu finden, die größer als der angegebene Schwellenwert ist. Es ist weit entfernt von perfekt, könnte dich aber 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;
}

1voto

Sheff Punkte 3425

Das Agility-Pack verwendet xpath zum Abfragen des HTML-Loads, den Sie gerade verwenden. Verwenden Sie einfach eine einfache xpath-Anweisung. Etwas wie...

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

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

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X