如何从网页上获取文字?

时间:2011-11-14 22:32:07

标签: c# visual-studio visual-studio-2010 c#-4.0

我希望用C#从网页上删除文字 我不想获取HTML,我想要从网页上删除真实文本。就像我输入“<b>cake</b>”一样,我想要蛋糕,而不是标签。

3 个答案:

答案 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中获取数据,或者数据位于元素的属性内并包含尖括号,则可能会出现意外的副作用。您还需要接受&amp;等转义序列。

答案 2 :(得分:1)

这取决于。 如果您的应用程序使用WebBrowser组件下载网页,那么该组件将在后台自动解析(就像Internet Explorer一样)。只需遍历DOM树并提取所需的文本。你会发现HtmlElement.InnerText property特别有用:)