mail mail
Нужен макрос для Excel?
Сделайте заказ прямо сейчас!
Ищете готовое решение?
Выбирайте и покупайте!
У вас есть интернет-магазин?
Настроим парсер под любой сайт!

Статья является примером использования программы «Парсер сайтов и файлов» для сбора данных с веб-страниц

Инструкция по добавлению файла настроек в программу

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

Задача: 

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

ВложениеРазмерЗагрузкиПоследняя загрузка
Файл настроек парсера ortik.ru — для 1 этапа (вывод списка товаров)11.68 КБ941 день 19 часов назад
Файл настроек парсера ortik_prices — для 2 этапа (загрузка цен)5.44 КБ731 день 19 часов назад
Пример результата в файле Excel74.94 КБ0Ещё не загружался
Описание: 

Особенностью парсера является сбор данных в 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 символ исходной строки, потом вторым действием мы меняем порядок элементов массива на обратный, а потом склеиваем массив обратно в одну строку, — таким образом, мы изменили в исходной строке порядок символов на обратный)

Комментарии

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

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