0

Есть небольшая задачка. Написать программу для чтения содержимого сайта. И дальнейшей записи этого в файл. Но желательно очистить текст от лишнего мусора.

Вот как я просто читаю всё содержимое:

string data = "Time = 12:00am temperature = 50";
var Client = new System.Net.WebClient();
Client.Credentials = System.Net.CredentialCache.DefaultCredentials;
Client.Proxy.Credentials = System.Net.CredentialCache.DefaultCredentials;
string text = Client.UploadString("", data);
int startIndex = text.IndexOf("<h1");
int length = text.IndexOf("Спасибо за внимание!") - startIndex;
text = text.Substring(startIndex, length);
string[] splitString = new string[] {"<p>", "</p>", "<u>", "</u>", "<i>", "</i>", "<strong>", "</strong>", "<h2>", "</h2>", "<h3>", "</h3>"};
string[] clearText = text.Split(splitString, StringSplitOptions.None);

Прокси, на случай если сайт не даст дёрнуть свои данные без авторизации. Так вот какие параметры для вытаскивания информации. Начиная с открытия тега h1 и заканчивая введённым словом/фразой, которую в консольке введёт пользователь. И всё что я вытащу, мне нужно очистить от специальных символов. То есть оставить только текст. Кто нибудь может подсказать как это можно сделать?

  1. Как считать от открытия тега h1 до введённого слова/фразы.
  2. Как очистить текст от кода html? Так же появилась 3 проблема. Бывает сползает кодировка. Пытаюсь поправить вот так вот:

    Client.Encoding = System.Text.Encoding.UTF8; Не помогает. Подскажите пожалуйста что сделать ещё и с этим.

Андрей
  • 1,413
  • 1
  • Читайте msdn String, можно про RegEx почитать. Последнее - не у всех сайтов кодировка UTF-8. Проверяйте заголовки ответа и мета тег, или пробуйте и UTF-8 и windows-1251. Очень много сайтов осталось в windows-1251.
  • – nick_n_a Sep 18 '17 at 11:14
  • Я правильно понимаю, что вы согласны на потерю форматирования и хотите сохранять plain text? А кроме того, вы согласны, что все служебные div'ы в шапках, боковых панелях (весь дизайн, короче) останется и может поехать? Или вы хотите ещё как-то научиться определять дизайн и отсекать его, оставляя вид как в "режиме для чтения"? – A K Sep 18 '17 at 11:24
  • https://ru.stackoverflow.com/questions/420354/%D0%9A%D0%B0%D0%BA-%D1%80%D0%B0%D1%81%D0%BF%D0%B0%D1%80%D1%81%D0%B8%D1%82%D1%8C-html-%D0%B2-net –  Sep 18 '17 at 11:34
  • @AK нет мне нужен просто текст. И я уже вроде как нашёл решение моих проблем но до конца не уверен. Заменил DownloadString на UploadString и пошло в нормальной кодировке. Разбил текст спилтом. Вообщем мой новый код в тексте вопроса. – Андрей Sep 18 '17 at 11:37
  • По моему добился результата. Сейчас наверное вопрос только в том правильно ли всмё у меня? и могут ли возникнуть какие нибудь ошибки? – Андрей Sep 18 '17 at 11:40
  • Могут. Тегов гораздо больше, чем указанных. Вы хотите постоянно дописывать возможные теги? – A K Sep 18 '17 at 11:55
  • @AK а ещё такой вопрос, как сделать что бы то что я ввожу в int startIndex = text.IndexOf(start); было не чувствительно к регистру? Потому что если в тексте сайта это указано всё с больших букв то я должен вводить так же. Как то можно от этого избавиться? – Андрей Sep 18 '17 at 12:19
  • @AK а то что описано в парсере в вашем примере подойдёт для любого сайта? И ещё как подключить IDocument? Не нашёл что то как он подключается к проекту. – Андрей Sep 18 '17 at 12:34
  • Чтобы было не чувствительно к регистру "ABCD".IndexOf("c", StringComparison.InvariantCultureIgnoreCase) – tym32167 Sep 18 '17 at 12:34
  • 1
    Вопросы по ответу лучше спрашивать под ответом – tym32167 Sep 18 '17 at 12:34