1
_request = (HttpWebRequest)WebRequest.Create(url);
_response = (HttpWebResponse) _request.GetResponse();
StreamReader streamReader = new StreamReader(_response.GetResponseStream());
string text = streamReader.ReadToEnd();

带有 html 标签的文本。如何获取没有 html 标签的文本?

4

4 回答 4

3

如何在不使用 3rd 方库的情况下从动态 HTML 中提取文本?很简单,您可以使用 .NET 框架中的字符串解析函数创建自己的 HTML 解析库。

说真的,自己做这件事是个坏主意。如果您要从 Web 中提取动态 HTML,则必须为不同的结束标签、不匹配的标签、缺少的结束标签等做好准备。除非您有充分的理由需要自己编写一个,否则只需使用 HTML Agility Pack 让它为您完成艰苦的工作。

另外,请确保您没有屈服于此处未发明综合症

于 2011-11-29T22:29:10.683 回答
3

尝试这个:

System.Xml.XmlDocument docXML = new System.Xml.XmlDocument();
docXML.Load(url);
string textWithoutTags = docXML.InnerText;

要开心 :)

于 2018-03-08T10:50:18.663 回答
2

1) 不要使用正则表达式。(参见这篇很棒的 StackOverflow 帖子:RegEx match open tags except XHTML self-contained tags

2) 使用 HtmlAgilityPack。但我看到你不想要第 3 方库,所以我们被迫....

3)使用XmlReader。您几乎可以直接使用 MSDN 中的示例代码,而忽略所有XmlNodeTypeXmlNodeType.Text. 对于这种情况,只需将输出写入 StreamWriter。

于 2011-11-29T22:02:01.600 回答
1

这个问题以前有人问过。有几种方法可以做到这一点,包括使用正则表达式或 Adrian 指出的敏捷包。

请参阅此问题:如何从 ASP.NET 中的字符串中去除 HTML 标记?

于 2011-11-29T20:59:36.867 回答