如何使用HTML Agility Pack从HTML文件正文中获取文本的第一段。我正在构建一个DIGG样式链接提交工具,并希望获得标题和文本的第一段。标题很简单,有关如何从正文中获取第一段文本的任何建议?我猜它可能在P或DIV范围内,具体取决于页面。
答案 0 :(得分: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;
}
答案 1 :(得分:0)
agility pack使用xpath查询html加载,只需使用简单的xpath语句。有点像...
HtmlDocument htmldoc = new HtmlDocument();
htmldoc.LoadHtml(content);
HtmlNodeCollection firstParagraph = htmldoc.DocumentNode.SelectNodes("//p[1]");