2

我将如何使用 HTML 敏捷包从 HTML 文件的正文中获取文本的第一段。我正在构建一个 DIGG 风格的链接提交工具,并且想要获取标题和第一段文字。标题很简单,关于如何从正文中获取第一段文本的任何建议?我猜它可能在 P 或 DIV 内,具体取决于页面。

4

2 回答 2

3

这是您控制的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;
}
于 2009-11-23T15:37:26.457 回答
1

敏捷包使用 xpath 来查询 html 负载,您只需使用一个简单的 xpath 语句。就像是...

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

HtmlNodeCollection firstParagraph = htmldoc.DocumentNode.SelectNodes("//p[1]");
于 2009-11-23T15:38:29.013 回答