我正在尝试从“div”中提取文本并排除其他所有内容。你能帮我吗?!
<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>
当我拉“文章”课时,我得到了所有内容,但我无法/不知道如何排除class =“date”,class =“news-type”,以及其中的所有内容。
以下是我使用的代码:
HtmlDocument doc = web.Load(url);
foreach (HtmlNode node in doc.DocumentNode.SelectNodes("//div[contains(@class,'article')]"))
{
name_text.text += node.InnerHtml.Trim();
}
谢谢!
答案 0 :(得分:0)
您需要类型为HtmlTextNode的ChildNodes。未经测试的建议代码:
var textNodes = node.ChildNodes.OfType<HtmlTextNode>();
if (textNodes.Any())
{
name_text.text += string.Join(string.Empty, textNodes.Select(tn => tn.InnerHtml));
}
答案 1 :(得分:0)
另一种方法是使用XPath /text()[normalize-space()]
从div
元素中获取非空,直接子文本节点:
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());
}
<强> dotnetfiddle demo
强>
输出
"Here is the location of the text i would like to pull"