Найти в Дзене

Парсинг цен с помощью Google Таблицы

Очень часто компании хотят сравнить свои цены с ценами конкурентов или собрать справочник по ценам для нужд отдела закупок. Иногда поставщики или посредники идут на встречу и отправляют прайс-листы, в иных случаях данные можно "спарсить" из интернет-магазина.

Парсинг (от английского parse) - это автоматический разбор текста в соответствии с заданными правилами. В качестве текста могут выступать и таблицы, и интернет-страницы.

Сегодня мне пришла рассылка от одного из магазинов автотоваров, поэтому попробуем получить в таблицу список товаров, артикулов и цен.

Для начала зайдем в каталог:

Скриншот интернет-магазина
Скриншот интернет-магазина

По-умолчанию показывается только 15 карточек товара, а нам нужно отобразить все. Обращаем внимание, что если нажать на кнопку "выводить по 30", в адресной строке поменяется один из параметров.

Скриншот из интернет-магазина. Желтым отмечен параметр в адресной строке
Скриншот из интернет-магазина. Желтым отмечен параметр в адресной строке

Что если заменить его, например, на 300?

Скриншот из интернет-магазина. Желтым отмечен параметр в адресной строке
Скриншот из интернет-магазина. Желтым отмечен параметр в адресной строке

Действительно, отобразились все карточки. С такой страницей удобно работать в Google Таблицы с помощью функции IMPORTXML. Скопируем ссылку на эту страницу и вставим для удобства в ячейку A1 нашей таблицы, а в ячейке A3 начнем писать формулу:

=importxml(A1; "//a")

В таком виде формула покажет все блоки на страницы, находящиеся в тэге <a></a> - все ссылки. Но нам нужно немного другое. Чтобы понять, что именно нужно указать в формуле, посмотрим, какой код используется для отображения карточек товаров. Для этого нажмем на карточку товара правой кнопкой мыши и выберем пункт меню "Inspect Element"

Скриншот окна браузера с интернет-магазином и просмотром кода страницы.
Скриншот окна браузера с интернет-магазином и просмотром кода страницы.

На скриншоте желты помечены поля, которые нам нужны. А именно, нам нужны все поля типа div с параметром class="item-v-art" и с параметром class="row-price". Отредактируем формулу:

=importxml(A1;"//div[@class='item-v-art'")

Скриншот гугл-таблиц
Скриншот гугл-таблиц

Функция подтянула все карточки товара и разложила в два столбца (потому что в тэге <div class="item-v-art"> вложено два других тэга). Результат уже не плох. Осталось добавить цены. В третью колонку в ячейке C3 напишем похожую формулу:

=importxml(A1;"//div[@class='row-price'")

И вот, готовый результат. То, что нужно!

Скриншот гугл-таблиц
Скриншот гугл-таблиц

Получившаяся таблица доступна всем по ссылке: https://docs.google.com/spreadsheets/d/1oXIljzj-ahT8CTSrJqnTbVOzRj-ru0bwvtxjYVWz4Qg/edit?usp=sharing

Делитесь своими интересными кейсами в комментариях, окажу посильную помощь.

Наука
7 млн интересуются