Пример парсинга интернет-магазина при помощи расширения iDatica

В этой статье на рассмотрим на примере, по шагам, как парсить данные из интернет-магазина при помощи расширения от iDatica.

Откройте сайт в браузере (статья на примере google chrome, но ms edge все тоже самое), откройте инструменты разработчика (F12), сбоку разместите окно расширения:

рабочие окна расширения

Теперь нам необходимо создать первый столбец с данными, пусть это будет поле «Название товара». Нажмите на «+» в расширении:

парсинг шаг 1

появится поле с настройками столбца, назовите поле:

парсинг шаг 2

В столбце есть:

  • Выбор селектора для поиска данных xpath или css;
  • Поле для запроса который будет вести к нужным данным — этот путь говорит программе какие данные нужно собрать на сайте и поместить в этот столбец. Как составлять запросы рассказывается в этой статье;
  • Кнопка для поиска пути к данным — запрос к данным составляется автоматически;
  • Кнопка показа какие элементы на странице находятся по введенному запросу;
  • Кнопка показа какие данные находятся на странице по этому запросу и их количество.

Давайте получим названия товаров. Для этого кликните правой клавишей мыши на названии и выберите в контекстном меню «посмотреть код»:

парсинг шаг 3

Фокус в панели разработчика перейдет к месту в коде сайта на котором расположен заголовок:

парсинг шаг 4

Видим заголовок h2, в него вложена ссылка a, в ссылку вложен элемент span в котором содержится текст заголовка. Так как заголовок h2 является уникальным элементом на странице построим запрос xpath от него:

//h2/a/span

Выберем селектор — xpath. Запрос поместим в соответствующее поле. Нажмем на пиктограмму лупы, чтобы проверить, что находит парсер на странице (должно быть активно окно браузера с сайтом) — найденные значения будут подсвечены:

парсинг шаг 5

Следующим шагом сделаем столбец в который будет собираться цена. Обратите внимание, что цена есть не у всех товаров:

парсинг шаг 5

В текущей конфигурации парсер «не знает» где начинаются и заканчиваются данные относящиеся к одному товару, значит если спарсить названия и цены, то в финальной выгрузке данные будут идти друг за другом без пропусков в тех ячейках где данных нет:

парсинг шаг 7

Чтобы данные относящиеся к одному товару располагались в одной строке, нужно указать парсеру на начало и конец блока одного товара. Для того, чтобы найти блок одного товара в коде, начните подниматься вверх по коду, наводите курсор в инспекторе задач на код, обратите внимание блоки данных при этом будут подсвечиваться:

Блоки данных

Наша задача найти верхний блок который отвечает за товар, такие блоки будут идти друг за другом и при наведении будут подсвечивать карточку товаров. Напишем запрос к этому блоку, я решил использовать стиль .s-widget-spacing-small. Выбираем путь к блоку данных: CSS, пишем туда нужный стиль:

парсинг шаг 7

Нажмем на пиктограмму лупы и проверим, что парсер верно определяет блоки с карточками товара:

парсинг шаг 7

Парсер подсветил карточки товара, значит данные будут собраны как нам нужно. Давайте проверим, найдем блок цены. При этом обратите внимание, что в Амазоне в карточке товара может быть несколько цен, значит нужно выбрать блок с правильной и спуститься до нужного элемента:

парсинг шаг 10

Получается так — ищем div с классом s-price-instructions-style, и спускаемся ниже, до нужного элемента. Так как после элемента a у некоторых товаров есть 2 элемента span (зачеркнутая цена), нужно указать, чтобы парсер спускался в первый span[1], в противном случае парсер соберет данные из обоих элементов span. Далее можно увидеть, что цена дублируется в коде, поэтому укажем, чтобы парсер искал цену в элементе span aria-hidden=»true».

парсинг шаг 11
//div[contains(@class,"s-price-instructions-style")]/div/a/span[1]/span[@aria-hidden="true"]

Посмотрим какие данные нашел парсер по этому запросу, нажмем на пиктограмму кнопки play (должно быть активно окно браузера с сайтом), откроется окно в котором отобразятся найденные значения:

парсинг шаг 12

Да, это наша цена и их на странице 10 штук, все верно.

Далее добавим, старую цену, как уже выяснили это соседний элемент span поэтому просто меняем 1 на 2:

/div[contains(@class,"s-price-instructions-style")]/div/a/span[2]/span[@aria-hidden="true"]

Далее получим картинку, от div с классом s-product-image-container спустимся до элемента img

div[class*="s-product-image-container"] img

Добавим еще пользовательский рейтинг, укажем просто стиль css:

.a-icon-star-small

Теперь добавим код кнопки далее, режим перехода установите на «Кнопка далее» и добавим стиль этой кнопки:

.s-pagination-next
Пагинация при парсинге

На этом будем считать, что это все данные которые нужно собрать и можно запускать парсер. Нажимаем на play, парсим нужное количество страниц, останавливаем парсер или ждем пока закончится каталог, и нажимаем на кнопку получения итогового файла:

step-15

Я хочу получить файл в формате csv, чтобы открыть его в excel. Разделитель (символ отделяющий столбцы) можно указать любой, по умолчанию «;».

И итог нашей работы, таблица с корректными данными:

table

Шаблон для парсинга Amazon

Давайте начнем работу

Заполните форму заявки или напишите в свободной форме. Так же мы отвечаем на телефон и в мессенджерах.