Как отпарсить html страницу на C#

Приветствую всех! Сегодня хочу продемонстрировать пример того как можно отпарсить интернет страницу. В примере ниже будет строка содержащая теги html, мы воспользуемся регулярными выражениями и выведем все ссылки из текста:

string input = "";
            input+="Тут у нас может быть любой текс <a href ='http://nookery.ru'>Home-page</a> Который не имеет значения.";
            input += "Это могут и быть как разметка, так и разные атрибуты html <a href ='http://nookery.ru'>Search</a> Нашей целью";
            input += "Показать пример того как <a href ='http://yandex.ru'>ya</a> Можно выдернуть ссылки из страници";

            var regex = new Regex(@"<a href ='(?<link>\S+)'>(?<text>\S+)</a>");
            Console.WriteLine(input);

            for(Match m=regex.Match(input);m.Success;m=m.NextMatch())
            {
                Console.WriteLine("Ссылка: {0,-25} на:{1,-4} позиция с именем: {2}",  m.Groups["link"],
                                                                                      m.Groups["link"].Index,
                                                                                      m.Groups["text"]);
            }

            Console.WriteLine(new string('-', 25));
            foreach(Match m in regex.Matches(input))
            {
                Console.WriteLine("Ссылка: {0,-25} на:{1,-4} позиция с именем: {2}", m.Groups["link"],
                                                                                      m.Groups["link"].Index,
                                                                                      m.Groups["text"]);
            }

            Console.WriteLine(new string('-', 25));

            var htmlQuery = from Match m in regex.Matches(input)
                            where m.Groups["link"].Value.StartsWith("http:")
                            select m;

            foreach(var m in htmlQuery)
            {
                Console.WriteLine("Ссылка: {0,-25} на:{1,-4} позиция с именем: {2}", m.Groups["link"],
                                                                                      m.Groups["link"].Index,
                                                                                      m.Groups["text"]);
            }

В примере выше представлены, три варианта того как это можно сделать, какой из предложенных вариантов воспользуетесь вы, решать вам!

 

Обновлено: 24.01.2018 — 17:07

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.