Ich versuche, Text von einem "Div" zu ziehen und alles andere auszuschließen. Kannst du mir bitte helfen ?!
<div class="article">
<div class="date">01.01.2000</div>
<div class="news-type"><a href="../link/page01">Breaking News</a></div>
"Here is the location of the text i would like to pull"
</div>
Wenn ich "Artikel" klasse bekomme ich alles, aber ich bin nicht in der Lage / weiß nicht, wie class = "date", class = "news-type" und alles darin auszuschließen.
Hier ist der Code, den ich verwende:
HtmlDocument doc = web.Load(url);
foreach (HtmlNode node in doc.DocumentNode.SelectNodes("//div[contains(@class,'article')]"))
{
name_text.text += node.InnerHtml.Trim();
}
Vielen Dank!
Ein anderer Weg wäre, XPath /text()[normalize-space()]
zu verwenden, um nicht-leere Direkt-Kind-Textknoten von den div
Elementen zu erhalten:
var divs = doc.DocumentNode.SelectNodes("//div[contains(@class,'article')]");
foreach (HtmlNode div in divs)
{
var node = div.SelectSingleNode("text()[normalize-space()]");
Console.WriteLine(node.InnerText.Trim());
}
Ausgabe :
"Here is the location of the text i would like to pull"
Sie möchten die ChildNodes vom Typ HtmlTextNode. Ungeprüfter Code vorgeschlagen:
var textNodes = node.ChildNodes.OfType<HtmlTextNode>();
if (textNodes.Any())
{
name_text.text += string.Join(string.Empty, textNodes.Select(tn => tn.InnerHtml));
}