Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Вариант выполнения тестового задания. Плотникова Кристина #10

Open
wants to merge 2 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 7 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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.
31 changes: 31 additions & 0 deletions main.py
Original file line number Diff line number Diff line change
@@ -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)