Задание: Интернет-магазины. Наполнение config файла парсера (Дистанционная работа)
Есть скрипт сбора цен с сайтов.
Файлы скрипта лежат в Google Cloud по ссылке - https://console.cloud.google.com/storage/browser/retail-prices-parser?pageState=("StorageObjectListTable":("f":"%255B%255D"))&authuser=4&invt=AbixYA&project=black-obelisk-381313
Внимание! Изменять какие-либо файлы в папках запрещено!
У скрипта есть боевая и тестовая версии. Боевая лежит в основной папке - retail-prices-parser, тестовая в подпапке debug. Файл конфигурации - parser.config, его стоит использовать в качестве примера/эталона.
Задача: создать новый config файл, который будет наполнен xpath путями и настройками по 30 новым сайтам. Протестировать работоспособность на нескольких примерах ссылок с сайта. Исключить ошибки.
Список сайтов - https://docs.google.com/spreadsheets/d/16vU7gGpUGjyY-4k9jhaqekVYYo9W_v6MXyFlqzzvQ9I/edit?gid=557553365#gid=557553365
Вам нужно обработать 1 кластер (пронумерованы в столбце Batch#), в кластере 30 сайтов. Точный кластер обсудим с вами в чате, зафиксирую имя/ник в таблице, т.к. задачу делим по нескольким подрядчикам.
Скрипт проверяет/берет (параметры, которые нужны в config файле):
• открывается ли указанная страница, нет ли там ошибки - new_notFound
• price и currency всех товаров (их лотов), в зависимости от того, что доступно на сайте и что есть в БД, возможные значения 1 bottle, 2, 3, 6, 12, 24 bottles. Изменения фиксирует в new_price и new_currency.
• outOfStock. Если находит, что товар помечен, как отсутствующий, то ставит new_outOfStock=true.
• inStock - Если у какого-либо E-shop специально помечено, что товар есть в наличии (в случаях, когда нет пометки, что товара нет в наличии)
• excludesTax / includesTax - пометку, является ли взятая цена ценой с налогом или без налога
• new_image - берет изображение товара
Для отладки развернута страница в Google Colab для запуска отладки скрипта по ссылке - https://colab.research.google.com/drive/1puooGD3JUEf8acoHsEerH82OAZc2-Wc_#scrollTo=YU6En-e0IS1z
(!) Работать нужно только с папкой debug. Результат работ - новый config файл, нужно создать его и добавить в папку debug, назвать "parser_ваше_имя_дата.config".
Внимание! Сам файл parser.config трогать нельзя! Задача в том, чтобы создать такой же файл (но с другим названием) с результатом вашей работы.
Дополнительная информация:
Скрипт запускается ежедневно в 8.00 UTC, работает примерно сутки.
Ошибки (на будущий анализ, следующий этап)
Все ошибки/несоответствия, найденные на страницах, помечаются в столбце new_error в файлах в папке logs. По таким записям с ошибками ничего не передается в БД.
Известные типы ошибок:
• "Price is not found even..." - Ошибка выдается, если не сработали ни outOfStock, ни notFound, ни price и currency. По ней можно отслеживать некорректные ссылки.
• "Не найден обработчик..." - Если в config файле не прописаны xpath для конкретного сайта, нет настроек на него, то будет выдана ошибка "Не найден обработчик для сайта [название сайта]".
• "Required currency not found" - на странице не найдена валюта, указанная в БД.
• "Exception: 'NoneType' object has no attribute 'group'" - ничего не получилось извлечь по регулярному выражению.
Доп комментарии, примечания:
• пакет, который использован для работы с xpath, для обращения к атрибутам использует img/@src
• изображения иногда не вытаскиваются, если xpath указан туда, где загрузка изображения lazy. Там, где url присутствует в месте без lazy лучше брать оттуда
• в parser.config файле есть мэпинг валют. Если в мэпинге нет того, что извлеклось с сайта, то в результе будет просто то, что извлеклось. Поэтому записи типа GBP -> GBP добавлять не надо.
• в config файле есть поле replace. В основном используется для корректного отображения цены, когда где-то используется запятая для отделения тысяч, или есть лишний пробел, что приводит к ошибке Price is not a number.