Парсер товаров и цен (в 2 этапа) с сайта ortik.ru

Задача: 

Загрузить список товаров, с выводом всех опций (размеров товара) в отдельные строки
Для каждого размера, получить цену (POST-запросом)

Описание: 

Особенностью парсера является сбор данных в 2 этапа.

Сначала запускается парсер с названием «ortik.ru», — он перебирает все категории товара, и формирует таблицу из 6 столбцов (название, размер, 2 новых артикула, id товара, id опции)
В принципе, этот парсер может сразу и цены прогружать (вывод в столбец 4 «цена» отключен, можно его включить), — но тогда вывод списка товаров займёт больше часа, а останавливать этот парсер нежелательно (т.к. при повторном его запуске, сбор данных начнётся с начала, а не с места остановки)
Если же выводить товары без цен, загрузка 25 тысяч товаров займет несколько минут (страницы товаров не прогружаются, данные берутся из результатов поиска по разделам, - с каждой страницы результатов берется информация сразу по 20 товарам, потому, вывод на лист идёт быстро)

Потому, для загрузки цен используется отдельный парсер «ortik_prices», который можно останавливать, — при очередном запуске, он начнет обработку с места остановки (обрабатывая только строки, где в столбце Цена пусто)
На момент запуска второго парсера, должен быть открыт файл Excel с данными, полученными от первого (основного) парсера.
Особенностью этого парсера (ortik_prices) является отправка POST запроса для получения цены, а параметрами этого запроса являются id товара (из столбца 6) и id опции (из столбца 7)
При запуске, парсер цен загружает главную страницу сайта с приёмом Cookies, а потом для каждой строки данных формирует POST запрос, с передачей данных в формате product_id={6}&option_id={7}
Перед выполнением POST запроса, есть команда сброса заголовков запроса, и потом несколько команд добавления заголовков запроса, - чтобы сайт думал, что запросы идут со страниц сайта из браузера.

Кроме того, поскольку процесс может быть длительным (хотя, по факту, 25 тысяч запросов выполняются примерно за час), после каждых 1000 строк выполняется принудительное сохранение файла Excel. Для этого, в разделе «вывод на лист» добавлен дополнительный столбец «сохранение», где проверяется текущий номер строки, и, если он кратен 1000, вызывается набор действий «save», содержащий одну команду сохранения текущей книги Excel.
У столбца «сохранение» снята галочка «выводить данные на лист», т.е. команды, назначенные в этом столбце, выполняются, но данные на лист не выводятся.

По окончании сбора цен, также выполняется принудительное сохранение файла Excel из автоматически выполняемого набора действий с названием Parser_Finish

В первом парсере («ortik.ru»), формируются 2 разных артикула, - общий для каждого товара, и уникальный для каждого размера товара.
Ввиду необходимости сделать артикулы непохожими на артикулы сайта-донора, выполняются преобразования:
- для кода товара 1, берётся исходный id товара, и вычитается из числа 10000 (из артикула 1234 получаем артикул 8766)
- для кода товара 2, парсер соединяет в одну строку id товара и id опции, после чего «переворачивает» строку, меняя порядок символов на противоположный (обратите внимание, как это реализовано 3 действиями, ввиду отсутствия функции «перевернуть строку», - сначала действием «регулярные выражения» мы разбиваем строку на массив, каждый элемент которого - 1 символ исходной строки, потом вторым действием мы меняем порядок элементов массива на обратный, а потом склеиваем массив обратно в одну строку, — таким образом, мы изменили в исходной строке порядок символов на обратный)

Стоимость этого парсера без перенастройки («как есть»): 900 рублей
Стоимость этого парсера c перенастройкой (под ваши нужды): от 1500 рублей
(плюс стоимость программы-парсера 4000 рублей, если вы ранее не покупали надстройку «Parser»)

Комментарии

Добрый день.
На примере данного парсера в результате где на действии выполнения post запроса должен загрузится код страницы, а выводиться {"price":"0","discount_price":0}. Тоже самое происходит и при настройке других сайтов. Что происходит не так?

Отправить комментарий

Содержание этого поля является приватным и не предназначено к показу.
CAPTCHA
Подтвердите, пожалуйста, что вы - человек:
  _                                  _   
| |_ ___ ___ ___ _ __ | |_
| __| / _ \ / __| / _ \ | '_ \ | __|
| |_ | __/ | (__ | __/ | | | | | |_
\__| \___| \___| \___| |_| |_| \__|
Введите код, изображенный в стиле ASCII-арт.