Необходимо написать парсер (веб-скраппер) для сайта
apteka.ru.
Стек/Язык программировани/Используемые библиотеки абсолютно не важны.
Парсеру на вход поступают либо текстовые запросы, либо ссылки. Парсер должен вернуть .csv файл с данными.
Сразу напишу что это очень не тривиальная задача. Если вы не гуру в написании парсеров и не умеете обходить различные защиты, то лучше проходите мимо и не тратье ни свое, ни наше время.
На сайте стоит защита QRATOR + кастомная защита с капчей.
Парсер должен работать в двух режимах:
- Через поиск на сайте
- Через загруженные в парсер ссылки
Логика работы парсера через поиск:
- Загружаются запросы в парсер
- Парсер собирает со всех страниц выдачи все ссылки товаров
- Затем открывает все полученные ранее ссылки и с них собирает все необходимые данные
Логика работы парсера через загруженные ссылки:
- Загружаются ссылки в парсер
- Эти ссылки открываются парсером и с них собираются все необходимые данные
Данные которые необходимо собирать с карточек товара:
- Наименование товара
- Производитель
- Наличие товара
- Цена
- Цена со скидкой
- Форма выпуска (мазь, пилюли и т.п.)
- Дозировка лекарства
- Объем
- Ссылка на товар
- Ссылка на основное изображение товара
- Дата сбора (в формате timestamp)
Стандартный регион для этого сайта - Москва, но нам необходимо собирать данные с абсолютно всех регионов этого сайта.
Регионы необходимо сдать в формате json:
{"Название региона на русском": "Занчение для установки этого региона в парсере",}
Также одно из важнейших требований - скорость сбора. Нам необходимо обрабатывать не менее 1 млн ссылок в сутки
В идеале будет использовать примерно такой шаблон кода:
- Функция parse. Грубо говоря это main, в котором будет происходить распределение это сбор по поиску или по карточкам.
- Функция parsePage. Здесь происходят все необходимые действия для сбора данных с поиска
- Функция parseCard. Здесь происходят все необходимые действия для сбора данных с карточки товара
- Функция makeRequest. Здесь происходят запросы к сайту
ВАЖНО. Критерии оценок по которым будет приниматься задача:
- Парсер работает и по поисковым запросам и по ссылкам
- Парсер собирает все необходимые данные с карточек
- Парсер верно собирает цены для различных регионов
- Вы написали json с регионами и значениями для их установки
- Парсер работает с необходимой для нас скоростью
- Парсер должен стабильно отработать в течении месяца на наших серверах