Генератор Sitemap
Этот проект представляет собой инструмент на языке Go для генерации карт сайта с использованием обхода в ширину (BFS) для указанного URL до заданной глубины. Результат выводится в формате XML, соответствующем протоколу Sitemap.
Возможности
- Алгоритм BFS: Эффективный обход и сбор URL, начиная с заданного URL.
- Контроль глубины: Установка максимальной глубины для ограничения области обхода.
- Вывод в формате XML: Генерация карты сайта в формате XML, совместимом с поисковыми системами.
- Фильтрация ссылок: Фильтрация и нормализация ссылок для правильного форматирования URL.
Установка
- Клонируйте репозиторий:
git clone https://github.com/nemopss/sitemap.git
- Перейдите в директорию проекта:
cd sitemap
- Скомпилируйте проект:
go build
Использование
Запустите генератор карты сайта с нужным URL и максимальной глубиной и выведите результат в файл:
./sitemap -url=https://example.com -depth=3 > sitemap.xml
Обзор кода
Основная функция
Функция main
парсит параметры командной строки, запускает BFS и кодирует полученные URL в формате XML.
Функция BFS
Функция bfs
выполняет обход в ширину для сбора URL до заданной глубины, гарантируя, что каждый URL посещается только один раз.
Обработка HTTP и URL
get(urlStr string) []string
: Получает HTML содержимое URL и извлекает ссылки.hrefs(r io.Reader, base string) []string
: Парсит HTML и извлекает гиперссылки.filter(links []string, keepFn func(string) bool) []string
: Фильтрует ссылки на основе предоставленного префикса.
Зависимости
Проект использует пакет github.com/nemopss/link
для парсинга HTML и извлечения ссылок.