HTML Agility Pack - 獲取頁面摘要

html html-agility-pack parsing

我如何使用HTML Agility Pack從HTML文件的正文中獲取文本的第一段。我正在構建一個DIGG樣式鏈接提交工具,並希望獲得標題和文本的第一段。標題很簡單,有關如何從正文中獲取第一段文本的任何建議?我猜它可能在P或DIV內,具體取決於頁面。

一般承認的答案

這是您控制的HTML嗎?如果是這樣,你可以給p一個id或一個類,並通過它找到它

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

編輯:由於你不控制HTML,可能以下工作。它接受所有HtmlTextNodes並嘗試查找大於指定閾值的文本分組。它遠非完美,但可能會讓你朝著正確的方向前進。

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

熱門答案

敏捷包使用xpath查詢html加載,只需使用簡單的xpath語句。就像是...

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

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



許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因