Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/319.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何从网页中获取文本?_C#_Visual Studio_Visual Studio 2010_C# 4.0 - Fatal编程技术网

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

我想用C#从网页中获取文本。

我不想要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
    }