Как извлечь текст из HTML без использования сторонних библиотек? - PullRequest
1 голос
/ 30 ноября 2011
_request = (HttpWebRequest)WebRequest.Create(url);
_response = (HttpWebResponse) _request.GetResponse();
StreamReader streamReader = new StreamReader(_response.GetResponseStream());
string text = streamReader.ReadToEnd();

Текст с HTML-тегами.Как я могу получить текст без тегов HTML?

Ответы [ 5 ]

3 голосов
/ 30 ноября 2011

Как извлечь текст из динамического HTML без использования сторонних библиотек?Проще говоря, вы придумали свою собственную библиотеку разбора HTML, используя функции разбора строк, присутствующие в .NET Framework.

Серьезно, делать это самостоятельно - плохая идея.Если вы извлекаете динамический HTML из Интернета, вы должны быть готовы к различным закрывающим тегам, несовпадающим тегам, отсутствующим конечным тегам и так далее. Если у вас нет действительно веской причины, по которой вам нужно написать ее самостоятельно, просто используйте HTML Agility Pack , и пусть это сделает тяжелую работу за вас.

Также, убедитесь, что вы не поддаваетесь синдрому Not Invented Here .

2 голосов
/ 30 ноября 2011

Возможно, вы захотите взглянуть на HTMLAgilityPack .

Это отличная бесплатная библиотека .net, которая позволяет загружать и анализировать HTML.Наслаждайтесь.

1 голос
/ 08 марта 2018

Попробуйте это:

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

Будь счастлив:)

1 голос
/ 30 ноября 2011

1) Не используйте регулярные выражения.(см. этот великолепный пост StackOverflow: RegEx соответствует открытым тегам, кроме автономных тегов XHTML )

2) Используйте HtmlAgilityPack.Но я вижу, что вы не хотите сторонних библиотек, поэтому мы вынуждены ....

3) Использовать XmlReader .Вы можете в значительной степени использовать пример кода прямо из MSDN и просто игнорировать все случаи XmlNodeType, кроме XmlNodeType.Text.В этом случае просто запишите свой вывод в StreamWriter.

1 голос
/ 30 ноября 2011

Этот вопрос задавался ранее.Есть несколько способов сделать это, в том числе использовать регулярное выражение или, как указал Адриан, пакет Agility Pack.

См. Этот вопрос: Как я могу удалить теги HTML из строки в ASP.NET

...