CoderCastrov logo
CoderCastrov
Парсер

Как парсить электронные коммерческие веб-сайты

Как парсить электронные коммерческие веб-сайты
просмотров
6 мин чтение
#Парсер

Используя Stabler!

Электронные коммерческие веб-сайты, в большинстве случаев, имеют одну и ту же структуру и могут быть объединены в единую и хорошо адаптированную стратегию парсинга.

В этой статье мы подробно рассмотрим основные моменты, которые следует учесть при попытке парсить электронный коммерческий веб-сайт, а также основные ошибки, которые следует избегать.

Мы также рассмотрим, как реализовать эту стратегию с использованием Stabler.

В Stabler мы создаем и продаем SaaS с низким кодом, который позволяет настраивать ботов для парсинга веб-сайтов. Он отлично подходит для парсинга электронных коммерческих веб-сайтов в масштабе!

Мы предлагаем БЕСПЛАТНЫЙ пробный период, если вы хотите протестировать и изучить парсинг веб-сайтов, у нас есть специальные учебные пособия и материалы: https://app.stabler.io/login?signup=open



Прежде всего: спланируйте навигацию!

Определите лучшую иерархию для выполнения парсинга

Вам нужно будет продумать иерархию продуктов при парсинге веб-сайта электронной коммерции.

Для веб-сайтов моды обычно используется следующая иерархия (сверху вниз):

  • Цель (Мужчины, Женщины, Дети, ...)
  • Рынок (Обувь, Одежда, Аксессуары, ...)
  • Категории (Кроссовки, Футболки, Шорты, ...)
  • Подкатегории (при наличии)

Вот несколько примеров:

Пример для Reebok

Избегайте парсинга дублирующихся категорий

Эти категории просто отображают одни и те же товары, но по-разному!

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

Например, для adidas категория "Новинки" уже присутствует в категориях "Мужчины", "Женщины" и т. д.

В этом случае избегайте парсинга этой категории. То же самое относится к категориям "Спорт" и "Коллекции".

Adidas: разбивка категории «Новинки»

Категорию Распродажа, тем не менее, необходимо проверить вручную, чтобы увидеть, дублируются ли товары в основных категориях или нет.

Избегайте парсинга резюме

Избегайте парсинга ссылок на все мужские обуви, все мужские одежды и т. д.

Продукты, находящиеся за ними, уже включены в категории рынка (обувь).

Вы можете либо парсить продукты по категориям, либо нет, но вам следует избегать обоих вариантов.

Пример Adidas

Создайте надежные селекторы для навигации

Категории имеют тенденцию меняться со временем! Убедитесь, что ваш селектор CSS / XPATH будет стабильным

Цели (мужчины, женщины и дети в данном случае) меняются не так часто, вы можете, в этом случае, закодировать URL-адреса.

Но для категорий и подкатегорий убедитесь, что ваш селектор не сломается, если веб-сайт добавит или удалит определенные категории.

Как выполнить навигацию с помощью Stabler?

Пример: Adidas

Для https://www.adidas.co.uk/ иерархия Target и Market кажется надежной. Я предполагаю, что она не изменится в будущем.

Я закодирую Target X Market и просто сделаю 6 дочерних элементов для демонстрации:

После того, как вы попадете в раздел, мы будем собирать ссылки отсюда:

Adidas categories

Для конфигурации Stabler у вас будет 2 узла с 2 элементами извлечения, прикрепленными к первому узлу:

Adidas Navigation with Stabler configuration

Я использовал следующие селекторы:

  • Для элемента извлечения цели: ol[typeof=”BreadcrumbList”] li:nth-of-type(3) span:last-child
  • Для элемента извлечения рынка: ol[typeof=”BreadcrumbList”] li:nth-of-type(4) span:last-child
  • Для узла категории: xpath://*[@class=”gl-carousel__content”] //li //a[not(contains(text(), ‘All Men’))][not(contains(text(), ‘All Women’))]

Вы видите, что в узле категории селектор XPATH исключает ссылки All Men и All Women 😉

Вот и все для навигации! С Stabler нужно всего лишь 4 узла для построения 😁!


Пагинация

Вам потребуется извлечь все страницы товаров

Пагинация довольно проста с помощью Stabler. Мы будем переходить на следующую страницу, используя ссылку на следующую страницу в случае с Adidas.

Adidas: Ссылка на следующую страницу для навигации

Основной элемент для проверки заключается в том, что на последней странице товара больше нет ссылки на следующую страницу, чтобы избежать бесконечного цикла 😉

Adidas: Последняя страница не содержит ссылку на следующую страницу

Мы можем использовать этот селектор для получения ссылки на следующую страницу: a[data-auto-id=”plp-pagination-next”], который даст следующую конфигурацию Stabler:

Stabler узел пагинации

Перейдите к продуктам

Убедитесь, что вы захватили все продукты!

В случае Adidas каждая категория будет отображать 48 продуктов:

Adidas : категория мужских футболок

Можно сказать: "хорошо, мне нужно извлечь 48 ссылок на этом шаге", но если вы посмотрите внимательнее, вы увидите, что некоторые продукты группируются по цветовым вариантам, например, вот этот:

Adidas: варианты цветов

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

В этой статье я выберу второй вариант. Затем я получу все продукты с помощью этого селектора: div[data-auto-id=”product_container”] .glass-product-card__assets > a[data-auto-id]

Stabler config для получения 48 продуктов на странице

Склонение цветов

Не забудьте об этом шаге, иначе вы пропустите продукты!

На предыдущем шаге мы не захватили все варианты цветов. Я сделаю это, когда перейду на страницу продукта:

Например: https://www.adidas.co.uk/ozweego-shoes/EE6999.html

Adidas: Пример продукта с вариантами цветов

и продукт без вариантов цветов: https://www.adidas.co.uk/heitor-forum-84-low-adv-shoes/HQ6690.html

Adidas: Пример продукта без вариантов цветов

Я буду использовать этот селектор для вариантов продукта: a[data-testid=”color-variation”]

Узел с вариантами цветов

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

Расширенные параметры для узла Извлечение и просмотр страниц

Извлечь все данные!

Мы перешли на страницу продукта, извлеките все содержимое, которое вы хотите

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

Adidas example

Вы можете извлечь:

  • Цены: проверьте полную цену и скидочные товары, чтобы создать надежные селекторы для цен
  • Размеры: список всех размеров
  • Доступность размеров: размеры, которые клиент может купить
  • и т.д. ...

С Stabler вы просто добавляете новый узел для извлечения другого элемента. Проверьте параметр is_list в расширенных параметрах извлечения элемента, чтобы извлечь список (например, для размеров).



Загрузка в вашу базу данных

Завершение!

Как только вы исследовали все соответствующие категории, разбили все цвета на страницы и извлекли всю необходимую информацию, пришло время загрузить данные в базу данных!

В Stabler у вас есть несколько вариантов:

Загрузка извлеченных данных в базу данных
  • Загрузка в MongoDB: укажите цепочку подключения для непосредственной загрузки в определенную коллекцию
  • Загрузка в Google Sheets: для небольших извлечений
  • Загрузка в S3: каждая запись будет представлена в виде JSON-файла, который будет загружен в совместимое с S3 хранилище
  • Загрузка с использованием REST API: будет выполнен вызов API к вашему собственному API бэкэнду.
  • ... мы продолжим добавлять больше подключений к базе данных!


С Stabler вы сосредоточены на стратегии парсинга, а мы берем на себя все остальное для вас!

Если вы уже являетесь экспертом в области парсинга веб-сайтов, Stabler позволит вам настраивать веб-сайты намного быстрее и легче отслеживать/обновлять изменения во время регулярных извлечений.

Вот как выглядит конечная конфигурация:

Adidas extraction done with Stabler!

Проверьте нашу ценовую политику для продуктовой линии SOLO

Мы предлагаем БЕСПЛАТНЫЙ пробный период, если вы хотите протестировать https://app.stabler.io/login?signup=open

Автор:Анис Гандура — Генеральный директор и вице-президент по инженерии Stabler

Twitter: https://twitter.com/anis_gandoura