Как парсить электронные коммерческие веб-сайты
Table Of Content
- Используя Stabler!
- Прежде всего: спланируйте навигацию!
- Избегайте парсинга дублирующихся категорий
- Избегайте парсинга резюме
- Создайте надежные селекторы для навигации
- Как выполнить навигацию с помощью Stabler?
- Пагинация
- Перейдите к продуктам
- Склонение цветов
- Извлечь все данные!
- Загрузка в вашу базу данных
- С Stabler вы сосредоточены на стратегии парсинга, а мы берем на себя все остальное для вас!
Используя Stabler!
Электронные коммерческие веб-сайты, в большинстве случаев, имеют одну и ту же структуру и могут быть объединены в единую и хорошо адаптированную стратегию парсинга.
В этой статье мы подробно рассмотрим основные моменты, которые следует учесть при попытке парсить электронный коммерческий веб-сайт, а также основные ошибки, которые следует избегать.
Мы также рассмотрим, как реализовать эту стратегию с использованием Stabler.
В Stabler мы создаем и продаем SaaS с низким кодом, который позволяет настраивать ботов для парсинга веб-сайтов. Он отлично подходит для парсинга электронных коммерческих веб-сайтов в масштабе!
Мы предлагаем БЕСПЛАТНЫЙ пробный период, если вы хотите протестировать и изучить парсинг веб-сайтов, у нас есть специальные учебные пособия и материалы: https://app.stabler.io/login?signup=open
Прежде всего: спланируйте навигацию!
Определите лучшую иерархию для выполнения парсинга
Вам нужно будет продумать иерархию продуктов при парсинге веб-сайта электронной коммерции.
Для веб-сайтов моды обычно используется следующая иерархия (сверху вниз):
- Цель (Мужчины, Женщины, Дети, ...)
- Рынок (Обувь, Одежда, Аксессуары, ...)
- Категории (Кроссовки, Футболки, Шорты, ...)
- Подкатегории (при наличии)
Вот несколько примеров:
Избегайте парсинга дублирующихся категорий
Эти категории просто отображают одни и те же товары, но по-разному!
На некоторых веб-сайтах у вас могут быть некоторые категории или даже разделы сайта, которые не содержат новых товаров, а только "переорганизацию" уже имеющихся в основных категориях.
Например, для adidas категория "Новинки" уже присутствует в категориях "Мужчины", "Женщины" и т. д.
В этом случае избегайте парсинга этой категории. То же самое относится к категориям "Спорт" и "Коллекции".
Категорию Распродажа, тем не менее, необходимо проверить вручную, чтобы увидеть, дублируются ли товары в основных категориях или нет.
Избегайте парсинга резюме
Избегайте парсинга ссылок на все мужские обуви, все мужские одежды и т. д.
Продукты, находящиеся за ними, уже включены в категории рынка (обувь).
Вы можете либо парсить продукты по категориям, либо нет, но вам следует избегать обоих вариантов.
Создайте надежные селекторы для навигации
Категории имеют тенденцию меняться со временем! Убедитесь, что ваш селектор CSS / XPATH будет стабильным
Цели (мужчины, женщины и дети в данном случае) меняются не так часто, вы можете, в этом случае, закодировать URL-адреса.
Но для категорий и подкатегорий убедитесь, что ваш селектор не сломается, если веб-сайт добавит или удалит определенные категории.
Как выполнить навигацию с помощью Stabler?
Пример: Adidas
Для https://www.adidas.co.uk/ иерархия Target и Market кажется надежной. Я предполагаю, что она не изменится в будущем.
Я закодирую Target X Market и просто сделаю 6 дочерних элементов для демонстрации:
- https://www.adidas.co.uk/men-shoes
- https://www.adidas.co.uk/men-clothing
- https://www.adidas.co.uk/men-accessories
- https://www.adidas.co.uk/women-shoes
- https://www.adidas.co.uk/women-clothing
- https://www.adidas.co.uk/women-accessories
После того, как вы попадете в раздел, мы будем собирать ссылки отсюда:
Для конфигурации Stabler у вас будет 2 узла с 2 элементами извлечения, прикрепленными к первому узлу:
Я использовал следующие селекторы:
- Для элемента извлечения цели: 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.
Основной элемент для проверки заключается в том, что на последней странице товара больше нет ссылки на следующую страницу, чтобы избежать бесконечного цикла 😉
Мы можем использовать этот селектор для получения ссылки на следующую страницу: a[data-auto-id=”plp-pagination-next”], который даст следующую конфигурацию Stabler:
Перейдите к продуктам
Убедитесь, что вы захватили все продукты!
В случае Adidas каждая категория будет отображать 48 продуктов:
Можно сказать: "хорошо, мне нужно извлечь 48 ссылок на этом шаге", но если вы посмотрите внимательнее, вы увидите, что некоторые продукты группируются по цветовым вариантам, например, вот этот:
В этом случае у вас есть два варианта: либо вы извлекаете все продукты и их варианты цветов здесь, либо вы разделяете цвета, когда переходите на страницу продукта.
В этой статье я выберу второй вариант. Затем я получу все продукты с помощью этого селектора: div[data-auto-id=”product_container”] .glass-product-card__assets > a[data-auto-id]
Склонение цветов
Не забудьте об этом шаге, иначе вы пропустите продукты!
На предыдущем шаге мы не захватили все варианты цветов. Я сделаю это, когда перейду на страницу продукта:
Например: https://www.adidas.co.uk/ozweego-shoes/EE6999.html
и продукт без вариантов цветов: https://www.adidas.co.uk/heitor-forum-84-low-adv-shoes/HQ6690.html
Я буду использовать этот селектор для вариантов продукта: a[data-testid=”color-variation”]
По умолчанию, узел Извлечение и просмотр страниц будет продолжать навигацию, если ссылки не найдены, что замечательно, потому что в случае отсутствия ссылок мы хотим продолжить поток графа 🙂
Извлечь все данные!
Мы перешли на страницу продукта, извлеките все содержимое, которое вы хотите
После того, как вы перейдете на страницу продукта, добавьте все элементы для извлечения:
Вы можете извлечь:
- Цены: проверьте полную цену и скидочные товары, чтобы создать надежные селекторы для цен
- Размеры: список всех размеров
- Доступность размеров: размеры, которые клиент может купить
- и т.д. ...
С Stabler вы просто добавляете новый узел для извлечения другого элемента. Проверьте параметр is_list в расширенных параметрах извлечения элемента, чтобы извлечь список (например, для размеров).
Загрузка в вашу базу данных
Завершение!
Как только вы исследовали все соответствующие категории, разбили все цвета на страницы и извлекли всю необходимую информацию, пришло время загрузить данные в базу данных!
В Stabler у вас есть несколько вариантов:
- Загрузка в MongoDB: укажите цепочку подключения для непосредственной загрузки в определенную коллекцию
- Загрузка в Google Sheets: для небольших извлечений
- Загрузка в S3: каждая запись будет представлена в виде JSON-файла, который будет загружен в совместимое с S3 хранилище
- Загрузка с использованием REST API: будет выполнен вызов API к вашему собственному API бэкэнду.
- ... мы продолжим добавлять больше подключений к базе данных!
С Stabler вы сосредоточены на стратегии парсинга, а мы берем на себя все остальное для вас!
Если вы уже являетесь экспертом в области парсинга веб-сайтов, Stabler позволит вам настраивать веб-сайты намного быстрее и легче отслеживать/обновлять изменения во время регулярных извлечений.
Вот как выглядит конечная конфигурация:
Проверьте нашу ценовую политику для продуктовой линии SOLO
Мы предлагаем БЕСПЛАТНЫЙ пробный период, если вы хотите протестировать https://app.stabler.io/login?signup=open
Автор:Анис Гандура — Генеральный директор и вице-президент по инженерии Stabler
Twitter: https://twitter.com/anis_gandoura