C# 如何从网页中获取文本?
我想用C#从网页中获取文本。C# 如何从网页中获取文本?,c#,visual-studio,visual-studio-2010,c#-4.0,C#,Visual Studio,Visual Studio 2010,C# 4.0,我想用C#从网页中获取文本。 我不想要HTML,我想要网页上的真实文本。例如,如果我键入“cake”,我想要的是蛋糕,而不是标签。您可以使用正则表达式(如下面的一个简单示例)去除标签: //当然,为了方便起见,您可以导入System.Text.RegularExpressions。 System.Text.RegularExpressions.Regex标记=new System.Text.RegularExpressions.Regex(“\”); myHTML=tag.Replace(myH
我不想要HTML,我想要网页上的真实文本。例如,如果我键入“
cake
”,我想要的是蛋糕,而不是标签。您可以使用正则表达式(如下面的一个简单示例)去除标签:
//当然,为了方便起见,您可以导入System.Text.RegularExpressions。
System.Text.RegularExpressions.Regex标记=new System.Text.RegularExpressions.Regex(“\”);
myHTML=tag.Replace(myHTML,String.Empty);
但是,如果您需要检索大量结构良好的数据,那么最好使用HTML库1。(如果网页是XHTML,那么最好使用System.Xml
类。)
例如,我喜欢。2如果您试图从JavaScript中获取数据,或者如果数据位于元素的属性中并包含尖括号,则这可能会产生意外的副作用。您还需要接受转义序列,如
&代码>使用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
}
视情况而定如果应用程序使用WebBrowser组件下载网页,则该组件将在后台自动为您进行解析(就像Internet Explorer一样)。只需遍历DOM树并提取所需的文本。你会发现特别有用:)检查HTML解析器,比如HTML Agility Pack,然后递归地在DOM中循环并从每个元素中提取文本。看看我认为正则表达式不会很好地工作。你可以在HTML中使用不属于标记的尖括号,它们也可以出现在CSS、Javascript字符串常量等中。真正做到这一点的唯一方法是使用HTML解析器。@MikeChristensen:这就是为什么我说a“一个简单的示例”和b“大量”。如果OP只需要一点点,这一点不需要在项目中包含一个完整的解析器。此外,JavaScript通常不包括在数据解析中,CSS绝对不包括……是的,我想这就是你的意思——我只是想更明确地指出它。@MikeChristensen:好的。我也会写一个关于这个的注释。
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
}