Это мощный веб-краулер на Java Spring Boot, который умеет искать информацию в Википедии (En) и РуВики (Ru). Приложение автоматически определяет язык запроса, парсит страницы используя алгоритм BFS (поиск в ширину) и кэширует результаты в Redis для мгновенной выдачи при повторных запросах.
- Умный поиск: Автоматически определяет язык запроса.
- Кириллица -> ищет на ru.ruwiki.ru
- Латиница -> ищет на en.wikipedia.org
- Высокая производительность: Использует Redis для кэширования результатов. Повторный поиск занимает <20 мс.
- Алгоритм BFS: Обходит связанные статьи с ограничением глубины и количества результатов.
- Статистика: Отображает время выполнения запроса и источник данных (Интернет или Кэш).
- Полная Докеризация: Легкий запуск одной командой через Docker Compose.
- Backend: Java 21, Spring Boot, Spring Data Redis, Spring Security
- Parsing: Jsoup (HTML парсинг)
- Database: PostgreSQL (пользователи/логи), Redis (кэш)
- Frontend: Thymeleaf, JavaScript (Fetch API), CSS
- DevOps: Docker, Docker Compose
Убедитесь, что у вас установлен Docker Desktop.
-
Клонируйте репозиторий:
git clone https://github.com/ArtVlk/WebCrawler.git cd crawler -
Запустите приложение:
docker-compose up --build -
Откройте в браузере: http://localhost:8080
Если вы хотите разрабатывать код локально:
-
Запустите инфраструктуру (Redis + DB) через Docker:
docker-compose up -d redis db -
Запустите класс CrawlerApplication.
Основные настройки находятся в src/main/resources/application.properties и docker-compose.yml.
- DB_HOST: Адрес базы данных
- SPRING_DATA_REDIS_HOST: Адрес Redis
- MAX_DEPTH: Глубина поиска BFS (в коде)
- MAX_RESULTS: Лимит статей (в коде)
Приложение работает через Web-интерфейс, но имеет открытый JSON API.
POST /api/search Тело запроса (JSON): { "query": "Java Spring" }
Ответ (JSON):
[ { "url": "https://en.wikipedia.org/wiki/Spring_Framework", "title": "Spring Framework", "snippet": "Описание статьи..." } ]