我希望用C#从网页上删除文字
我不想获取HTML,我想要从网页上删除真实文本。就像我输入“<b>cake</b>
”一样,我想要蛋糕,而不是标签。
答案 0 :(得分:4)
使用HTML Agility Pack库。
这是解析HTML的非常好的库,因为您的要求使用此代码:
HtmlAgilityPack.HtmlWeb web = new HtmlAgilityPack.HtmlWeb();
HtmlAgilityPack.HtmlDocument doc = web.Load("Yor Path(local,web)");
var result=doc.DocumentNode.SelectNodes("//body//text()");//return HtmlCollectionNode
foreach(var node in result)
{
string AchivedText=node.InnerText;//Your desire text
}
答案 1 :(得分:1)
您可以使用正则表达式删除标签,例如 2 (一个简单示例):
// You can import System.Text.RegularExpressions for convenience, of course.
System.Text.RegularExpressions.Regex tag = new System.Text.RegularExpressions.Regex("\<.+?\>");
myHTML = tag.Replace(myHTML, String.Empty);
但是如果你需要检索大量结构良好的数据,那么最好使用HTML库 1 。 (如果网页是XHTML,那就更好了 - 使用System.Xml
类。)
1 例如,像http://htmlagilitypack.codeplex.com/一样
2 如果您尝试从JavaScript中获取数据,或者数据位于元素的属性内并包含尖括号,则可能会出现意外的副作用。您还需要接受&
等转义序列。
答案 2 :(得分:1)
这取决于。 如果您的应用程序使用WebBrowser组件下载网页,那么该组件将在后台自动解析(就像Internet Explorer一样)。只需遍历DOM树并提取所需的文本。你会发现HtmlElement.InnerText property特别有用:)