1. Andrey NA
  2. crawler_on_python

Overview

HTTPS SSH
Краткий алгоритм:

1. В конструкторе инициализируем переменные, создаём «очереди», на самом деле наборы (sets).
Наборы позволяют добавлять новые элементы, исключая их дублирование.
2. Запускаем поток search_link_thread, он ищет не посещённые ссылки, посещает их, выбирает следующие, и собирает из посещённых адреса картинок для скачивания.
3. Когда появляются картинки для скачивания стартует еще один поток, который занимается скачиванием картинок self.download_thread.start()
Всё это выполняется пока не надоест, либо не упадёт :), я не тестировал долго на usb модеме.

Почему упадёт?
Сначала начнёт тормозить, когда наполнится set, с ссылками, которые нужно посетить.
Потом скорее всего зависнет.

Если бы это не было тестовое задание варианты решения:
Использовать файлы для хранения ссылок, медленно, но должно работать.

Как правильно:
По хорошему можно наплодить дополнительных потоков, выкачивающих картинки, и организовать правильный доступ к разделяемым переменным, но это уже на мой взгляд за рамками тестового задания.


Параметры:
Crawler(url_, check_sz = False, root_url= '', path_='img/')
url_ - сайт на котором ищем картинки, точка входа в сайт
check_sz = False — проверяем ли размер картинок
Если да, то 
IMG_HEIGHT = 500
IMG_WIDTH = 500
root_url= '' адрес айта
path_           # путь для картинок



Запуск приложения:
cd crawler_on_python/src
python main.py

Запуск тестов:
cd crawler_on_python/test
python test_crawler.py