如何在不使用第三方库的情况下从HTML中提取文本
本文关键字:情况下 HTML 取文本 提取 第三方 | 更新日期: 2023-09-27 18:16:21
_request = (HttpWebRequest)WebRequest.Create(url);
_response = (HttpWebResponse) _request.GetResponse();
StreamReader streamReader = new StreamReader(_response.GetResponseStream());
string text = streamReader.ReadToEnd();
带有html标签的文本。我怎么能得到文本没有html标签?
如何在不使用第三方库的情况下从动态HTML中提取文本?很简单,您可以使用。net框架中提供的字符串解析函数创建自己的HTML解析库。
认真地说,你自己做这件事是个坏主意。如果要从web上提取动态HTML,就必须为不同的结束标记、不匹配的标记、缺失的结束标记等做好准备。除非你有一个真的很好的理由为什么你需要自己写一个,只要使用HTML敏捷包,让它为你做艰苦的工作。同时,确保你没有屈服于"这里没有发明"综合症。
试试这个:
System.Xml.XmlDocument docXML = new System.Xml.XmlDocument();
docXML.Load(url);
string textWithoutTags = docXML.InnerText;
开心点
1)不要使用正则表达式。(参见这个伟大的StackOverflow帖子:RegEx匹配开放标签,除了XHTML自包含标签)
2)使用htmllagilitypack。但是我看到你不想要第三方库,所以我们被迫....
3)使用XmlReader。您可以直接使用MSDN中的示例代码,并且忽略除XmlNodeType.Text
以外的所有XmlNodeType
的情况。对于这种情况,只需将输出写入StreamWriter。
这个问题以前就有人问过。有几种方法可以做到这一点,包括使用正则表达式或Adrian指出的敏捷包。
看这个问题:如何在ASP.NET中从字符串中剥离HTML标签?