diff --git a/README.md b/README.md index 4754fc7..4d06eac 100644 --- a/README.md +++ b/README.md @@ -16,7 +16,12 @@ 4. Найденные в соответствии с условием задачи домены должны выводиться в нижнем регистре без указания протокола и «www» в алфавитном порядке. ## Автор решения - +Плотникова Кристина Артёмовна ## Описание реализации - +Проект представляет собой простой обходчик страниц, который находит и выводит уникальные ресурсы (домены) в рамках страницы, на которые есть ссылки. Проект реализован на Python и использует библиотеки BeautifulSoup для парсинга HTML, json для форматирования результатов и библиотеку re для работы с регулярными выражениями. +В функции find_unique_sites используется BeautifulSoup для парсинга HTML-файла и поиска всех ссылок. Затем применяются регулярные выражения, чтобы извлечь доменные имена из этих ссылок, удаляя лишние части и приводя их к нижнему регистру, чтобы получить список уникальных сайтов. Далее происходит сортировка списока и преобразование его в формат JSON. Пример использования (закомментированный код) демонстрирует, как вызвать функцию с именем HTML-файла и вывести полученный JSON-список уникальных доменов на консоль. ## Инструкция по сборке и запуску решения +1. Установите необходимые библиотеки командой `pip install beautifulsoup4`. +2. Поместите HTML-файл, который нужно обработать, в ту же директорию, что и скрипт. +3. Запустите скрипт командой `python find_unique_sites.py`. +4. Результат будет выведен в консоль в формате JSON. diff --git a/main.py b/main.py new file mode 100644 index 0000000..dc6e01c --- /dev/null +++ b/main.py @@ -0,0 +1,31 @@ +from bs4 import BeautifulSoup +import json +import re + + +def find_unique_sites(html_file): + # Загрузка HTML-файла + with open(html_file, 'r', encoding='utf-8') as file: + html_content = file.read() + + soup = BeautifulSoup(html_content, 'html.parser') + links = soup.find_all('a') + + domains = set() + for link in links: + href = link.get('href') + if href: + # Использование регулярного выражения для извлечения домена + match = re.search(r'https?://([^/]+)', href) + if match: + domain = match.group(1) + domain = domain.replace('www.', '').lower() + domains.add(domain) + return json.dumps({"sites": sorted(list(domains))}) + + +# Пример использования +#if __name__ == "__main__": +# html_file = 'page.html' # Замените на путь к вашему HTML-файлу +# result = find_unique_sites(html_file) +# print(result)