Тестовое задание для компании grissli.ru
Разработать приложение для парсинга страниц.
Требования:
Серверная часть приложения должна быть написана на языке Python; В процессе парсинга страница не должна перезагружаться;
Сценарий работы:
Пользователь открывает страницу.
Вводит список URL до 5 штук за раз. Далее вводит информацию о дате времени, иначе используется текущая дата. Нажимает на кнопку Ок.
Затем в режиме реального времени (без перезагрузки страницы), в специальных блоках наблюдает за прогрессом, статусом парсинга, который начинается в указанное время. Процесс может быть остановлен спец кнопкой.
Это должен быть правдивый прогресс бар или меняющийся список статусов.
Парсинг всех введенных URL должен происходить параллельно.
Если имеются 5 URL которые еще не подверглись парсингу, то создавать новые задачи нельзя.
Результатом парсинга одного URL является HTML блок который ранее содержал статус.
После завершения процесса он должен содержать:
-
URL
-
Содержимое тега title
-
Содержимое первого тега H1, если он есть
-
Первое изображение из тега img, если он есть.
Оно должно быть на фоне этого блока (ссылка на копию изображения на сервисе)
Изображение должно быть закачено на сервис и процесс загрузки этого файла нужно отобразить в прогресс баре.
Обновление страницы не должно приводить к потере каких либо данных или прогресса парсинга.
Блоки с результатами парсинга должны быть разбиты на станицы по 3 блока на одной
Желательно оформить сервис в систему виртулизации dockercompose, Vagrant и пр...
Запуск из тестовой среды:
Установка зависимостей:
python setup.py develop
Запуск приложения:
python grissli_test/runserver.py
или
grissli_test
Запуск через docker:
docker-compose build
docker-compose up
По-умолчанию проект запускается на адресе 0.0.0.0 и порту 8000.