如何使用 HTML Agility Pack 将单个 <p> 标签输出到富文本框?
How do I output individual <p> tags using HTML Agility Pack to a rich text box?
我正在学习如何使用 HTML Agility Pack 从网页上抓取文本。我想从暴雪的网站上获取《守望先锋》中的英雄传记。我目前正在使用它来查找所需的文本并将其写入富文本框。
var paragraphs = page.DocumentNode.SelectNodes("//div[@class='hero-bio-backstory pad-sm']");
foreach(HtmlNode node in paragraphs)
{
rchTxtBox.AppendText(node.InnerText);
rchTxtBox.AppendText("\n");
}
我想要获取的是每个
的 InnerText,它们之间有一条 return 线。
<div class="hero-bio-backstory pad-sm"> == [=13=]
<p>...</p>
<p>...</p>
<p>...</p>
<p>...</p>
</div>
不是输出每个段落之间有一个 return 字符,而是将它们全部写入一个固定块中。有没有办法做到这一点?
您的 select 或 //div[@class='hero-bio-backstory pad-sm']
正在返回一个节点 - 整个 div
。当您随后在此节点上调用 InnerText
时,它返回整个 div 中的文本,没有标记。因此,您看到了您描述的行为:您的循环运行一次,将所有文本附加到一个块中,然后添加一个尾随换行符。
您需要使用 XPath 表达式,它将 select 所有 p
节点,即 //div[@class='hero-bio-backstory pad-sm']/p
.
我正在学习如何使用 HTML Agility Pack 从网页上抓取文本。我想从暴雪的网站上获取《守望先锋》中的英雄传记。我目前正在使用它来查找所需的文本并将其写入富文本框。
var paragraphs = page.DocumentNode.SelectNodes("//div[@class='hero-bio-backstory pad-sm']");
foreach(HtmlNode node in paragraphs)
{
rchTxtBox.AppendText(node.InnerText);
rchTxtBox.AppendText("\n");
}
我想要获取的是每个
的 InnerText,它们之间有一条 return 线。
<div class="hero-bio-backstory pad-sm"> == [=13=]
<p>...</p>
<p>...</p>
<p>...</p>
<p>...</p>
</div>
不是输出每个段落之间有一个 return 字符,而是将它们全部写入一个固定块中。有没有办法做到这一点?
您的 select 或 //div[@class='hero-bio-backstory pad-sm']
正在返回一个节点 - 整个 div
。当您随后在此节点上调用 InnerText
时,它返回整个 div 中的文本,没有标记。因此,您看到了您描述的行为:您的循环运行一次,将所有文本附加到一个块中,然后添加一个尾随换行符。
您需要使用 XPath 表达式,它将 select 所有 p
节点,即 //div[@class='hero-bio-backstory pad-sm']/p
.