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