HTMLアジリティパック - ページの概要を取得します
-
21-09-2019 - |
質問
HTML Agility Packを使用して、HTMLファイルの本文からテキストの最初の段落を取得するにはどうすればよいですか。 Diggスタイルのリンク提出ツールを構築しており、タイトルと最初のテキスト段落を取得したいと考えています。タイトルは簡単です。身体からテキストの最初の段落をどのように得るかについての提案はありますか?ページに応じてPまたはDiv内にある可能性があると思います。
解決
このHTMLはあなたが制御していますか?もしそうなら、あなたはPにIDまたはAクラスを与えることができ、それを介してそれを見つけることができます
//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;
}
他のヒント
Agility PackはXPathを使用して、単純なXPathステートメントを使用するHTML負荷を照会します。何かのようなもの...
HtmlDocument htmldoc = new HtmlDocument();
htmldoc.LoadHtml(content);
HtmlNodeCollection firstParagraph = htmldoc.DocumentNode.SelectNodes("//p[1]");
所属していません StackOverflow