如何使用HTML Agility Pack将单个<p>标签输出到富文本框?

时间:2016-06-22 00:58:12

标签: c# html web-scraping formatting html-agility-pack

我正在学习如何使用HTML Agility Pack从网页中删除文本。我希望从他们的网站上获取暴雪的Overwatch中的英雄传记。我目前正在使用它来查找所需文本并将其写入富文本框。

var paragraphs = page.DocumentNode.SelectNodes("//div[@class='hero-bio-backstory pad-sm']");

     foreach(HtmlNode node in paragraphs)
     {
         rchTxtBox.AppendText(node.InnerText);
         rchTxtBox.AppendText("\n");
     }

我想要得到的是每个&lt;的InnerText。 p>他们之间有一条回程线。

<div class="hero-bio-backstory pad-sm"> == $0
     <p>...</p>
     <p>...</p>
     <p>...</p>
     <p>...</p>
</div>

它不是输出每个段落之间的返回字符,而是将所有段落写入一个实体块。有没有办法做到这一点?

1 个答案:

答案 0 :(得分:1)

您的选择器//div[@class='hero-bio-backstory pad-sm']正在返回一个节点 - 整个div。然后,当您在此节点上调用InnerText时,它将返回整个div中的文本,无标记。因此,您将看到您描述的行为:您的循环运行一次,将所有文本附加到一个块中,然后添加一个尾随换行符。

您需要使用XPath表达式,它将选择所有p个节点,即//div[@class='hero-bio-backstory pad-sm']/p