Тестовое задание по сбору данных с сайта
Имя парсера: Apteka_scraper
- Пример выполненного парсинга по заданию находится в файле data.json. В него были собраны данные из следующих категорий товаров: Ватные диски,Термометры,Ингаляторы
- Прокси были добавлены (scrapy rotating proxies), но из-за медленной работы парсера (использовались только общедоступные проски-адреса) было решено отключить данный функционал (settings.py)
- Парсер, как и было указано в задании осуществляет сбор данных о товарах по нескольким категориям; но был реализован подход ручного определения целевых категорий из имеющихся на сайте: При запуске парсера в консоли отображается предложение указать целевые категории товаров. Указанные категории проверяются на наличие в списке доступных и в случае их наличия формируются url-ы соответствующих категорий
- Особенности сбора словаря:
- "stock"->"count" - при исследовании веб-ресурса не обнаружено возможности определить точное количество товара оставшееся на складе
- "assets"->"view360" и "assets"->"video" - при исследовании веб-ресурса не обнаружено данных типов информации о товарах
- "metadata"->"__ description" - описания товара представляли из себя контент различной длины и содержания, поэтому было принятно решение забирать весь html-код, который вложен непосредственно в контейнер элемента, отвечающего за описание товара
- "metadata"->"СТРАНА ПРОИЗВОДИТЕЛЬ" - единственная характеристика товара, которая наблюдалась в карточках товаров, а также не была зафиксирована в других частях словаря
- "variants" - при исследовании веб-ресура не было найдено разделения товаров на варианты
- Описание методов класса парсера:
- parse - метод запуска процесса парсинга. В рамках метода осуществляется определение целевых категорий товаров (при помощи ввода данных через консоль) и запуск обхода выбранных категорий
- parse_single_cat - метод осуществляет обход списка карточек товаров отдельной категории
- parse_goods_card - метод осуществляет парсинг отдельной карточки товара
- form_price_data - метод используется для формирование части данных, относящихся к цене товара
- form_assets_data - метод используется для формирование части данных, относящихся к визуальной презентации товара
- form_metadata_data - метод используется для формирование части данных, относящихся к текстовому описанию товара
- get_cats_list - метод используется для получения списка всех существующих категорий товаров на сайте
- parse_cats - метод используется для выделения из текстового контента тега <script> информации о категориях товаров и их преобразования в словарь
- form_cats_plane_dict - рекурсивный метод используется для формирования одноуровневого(плоского) словаря с категориями ([адрес_категории]="название категории"); данный словарь используется при выборе категорий товаров и формировании соответствующих им url-ов