Однажды теплым летним вечером вас посетила идея разработать свое расширение для браузера для построения ссылочного графа. Что это означает на практике — ваше расширение активируется на какой-либо web-странице сайта, определяет список уникальных внешних ссылок, после чего повторяет алгоритм для каждой ссылки. Максимальная глубина поиска, визуализация собранных данных и прочие вопросы вы сочли вторичными, а начать решено было с малого — с обходчика страниц, который бы находил уникальные ссылки.
В процессе проектирования вы решили немного упростить ваш mvp и в итоге поставили себе задачу следующим образом: реализовать поиск всех уникальных ресурсов (доменов) в рамках страницы, на которые есть ссылки. При этом, формулируя задачу, вы сделали следующие допущения:
- Доменом считается запись вида example.com;
- Поддомен, например, sub.example.com, считается отдельным ресурсом;
- Протокол (при наличии) не имеет значения.
Требования к реализации:
- Реализация должна содержать, как минимум, одну процедуру (функцию/метод), отвечающую за поиск уникальных ресурсов, и должна быть описана в readme.md в соответствии с чек-листом;
- В качестве входных данных программа использует реальный html-файл (page.html) , считав который, начинает выполнять поиск;
- Процедура (функция/метод) поиска должна возвращать строку в формате json следующего формата:
- {«sites»: [«mail.ru», «rbc.ru», «ria.ru»]}
- Найденные в соответствии с условием задачи домены должны выводиться в нижнем регистре без указания протокола и «www» в алфавитном порядке.
Денисов Алексей Геннадьевич. Почта, с которой отправлена анкета: [email protected]
Метод Main
использует по очереди методы следующих статических классов:
HtmlDocumentLoader
: методLoad
загружает в объектHtmlDocument
html-файл.UniqueDomainsExtractor
: методExtractToArray
производит парсинг html-файла и извлечение из него уникальных доменов, используя возможности пакета HtmlAgilityPack.DomainsJsonConverter
: методConvertToJsonString
из массива доменов создаёт строку установленного в задании Json-формата
Полученная строка Json-формата вводится на экран.
Из папки с проектом UniqueDomainsExtractorApp
выполните следующие команды:
dotnet build
dotnet run [путь к html-файлу]
Открыть UniqueDomainsExtractor.sln
и, задав в свойствах отладки проекта аргумент командной строки (путь к html-файлу), запустить приложение.