如何在不使用第三方库的情况下从HTML中提取文本?

时间:2011-11-29 20:53:21

标签: c# text web scraper

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

带有html标签的文字。如何在没有html标签的情况下获取文本?

5 个答案:

答案 0 :(得分:3)

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

说真的,自己这样做是个坏主意。如果您从Web上提取动态HTML,则必须为不同的结束标记,不匹配的标记,缺少结束标记等做好准备。 除非你有一个真的好的理由,为什么你需要自己编写一个,只需使用HTML Agility Pack ,然后让它为你努力工作。

另外,请确保您没有屈服于Not Invented Here Syndrome

答案 1 :(得分:2)

您可能需要查看HTMLAgilityPack

这是一个很棒的免费.net库,它允许您加载和解析HTML。享受。

答案 2 :(得分:1)

之前已经问过这个问题。有几种方法可以做到这一点,包括使用正则表达式或Adrian,Agility Pack指出。

请参阅此问题:How can I strip HTML tags from a string in ASP.NET?

答案 3 :(得分:1)

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

2)使用HtmlAgilityPack。但我发现你不想要第三方图书馆,所以我们被迫......

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

答案 4 :(得分:1)

试试这个:

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

快乐:)