Поисковый бот для сбора текстовой информации с веб-страниц и ссылок.
Бот помещает в очередь url
переданный ему при запуске. Затем он начинает обрабатывать все url
в очереди. Для каждого url
бот загружает содержимое страницы, записывая в БД связи между сайтами, между сайтами и словами. Все найденые на странице url
помещает обратно в очередь.
Для запуска бота нужно установить дополнительные компоненты python командой
pip install -r requirements.txt
Для работы бота нужны запущенные сервисы mongodb
и rabbitmq
MONGO
- адресmongodb
-хостаMONGO_PORT
- порт для подключения кmongodb
-хостуRMQ_HOST
- адресrabbitmq
-хостаRMQ_QUEUE
- имя очередиrabbitmq
RMQ_USERNAME
- пользователь для подключения кrabbitmq
-серверуRMQ_PASSWORD
- пароль пользователяCHECK_INTERVAL
- минимальное время между повторными проверками одного и того жеurl
EXCLUDE_URLS
- адреса которые будут исключены из обхода записанные через запятую в формате простых регулярных выражений.
URL
-url
который будет помещен в очередь при старте бота
В общем случае бота можно запустить с помощью команды
python -u crawler/crawler.py URL
Для проверки работы бота крайне рекомендуется запускать бота указывая url
специально подготовленного сайта https://vitkhab.github.io/search_engine_test_site/
и установленной переменной окружения EXCLUDE_URLS='.*github.com'
. Сделать это можно с помощью команды
EXCLUDE_URLS='.*github.com' python -u crawler/crawler.py https://vitkhab.github.io/search_engine_test_site/
!!!ВАЖНО!!! Пока бот тупенький, он лезет куда может дотянуться и не знает о правилах поведения ботов. Неконтроллируемый запуск бота может привести к временной блокировке на веб-ресурсах которые обрабатывал бот. Случаев блокировки при выполнении команды выше замеченно не было.
Для тестирования необходимо установить дополнительные компоненты с помщью команды
pip install -r requirements.txt -r requirements-test.txt
Базовая команда для запуска unit-тестов
python -m unittest discover -s tests/
Команды для генерации отчета о покрытии кода тестами
coverage run -m unittest discover -s tests/
coverage report --include crawler/crawler.py
Метрики для снятия prometheus
доступны по адресу http://HOST_IP:8000/
, где HOST_IP
- адрес хоста на котором запущен бот.
crawler_pages_parsed
- количество обработанных ботом страницcrawler_site_connection_time
- время затраченное ботом на подключение к веб-сайту и загрузку веб-страницыcrawler_page_parse_time
- время затраченное ботом на обработку содержимого веб-страницы
Бот отправляет логи в json
-формате в stdout