Как извлекать данные о товарах из URL

· 6 мин чтения

Скопировать цену, артикул и три фотографии со страницы поставщика в электронную таблицу можно за пару минут. Если проделать это для 150 позиций в рамках жилого проекта, уйдет целый рабочий день, а в качестве бонуса еще и опечатки. Это руководство покажет, как надежно извлекать данные о товарах из URL: сначала проверьте наличие структурированных данных, извлеките нужные поля, при отсутствии разметки переключитесь на парсинг макета и очистите результат, чтобы он сразу попал в смету.

Что вам понадобится до шага 1:

  • Список URL товаров поставщиков (по одному на товар, не страницы категорий)
  • Браузер с инструментами разработчика или среда Python, если вы хотите написать скрипт
  • Целевой формат для ваших данных: название, артикул, цена, валюта, изображения, размеры
  • Правило для вашей базовой валюты, чтобы цены можно было сравнивать

Почему парсинг URL товаров лучше ручного ввода

Ручной ввод терпит неудачу тремя предсказуемыми способами. Это медленно. Он допускает ошибки, такие как переставленная цифра в артикуле или цена, скопированная с неправильным символом валюты. И он устаревает в тот момент, когда вы заканчиваете, потому что никто не проверяет страницу поставщика в середине процесса закупки.

Изучение того, как извлекать данные о товарах из URL, превращает каждую позицию в последовательную запись. Учебные пособия от Oxylabs и Zyte показывают общий шаблон: запросить страницу, найти поля, сохранить их в структурированном формате. Та же логика применима к товарам для интерьера, независимо от того, пишете ли вы скрипт самостоятельно или используете инструмент, который делает это за вас.

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

Шаг 1: Проверьте, есть ли на странице поставщика данные о товаре в формате JSON-LD

Прежде чем писать селектор или изучать новый инструмент, выясните, не предоставляет ли страница уже готовые, чистые данные. Многие сайты поставщиков встраивают структурированные данные в тег script с типом application/ld+json. Он находится отдельно от видимого макета и существует для того, чтобы поисковые системы и другие системы могли последовательно считывать информацию о товаре.

Чтобы проверить, откройте страницу товара, просмотрите исходный код страницы и найдите ld+json. Если вы найдете блок, прочитайте его. Ищите тип Product обычно с вложенным Offer который содержит цену. Бесплатный JSON-LD extractor and schema checker может извлечь эти блоки для вас и отметить, что присутствует, что помогает, когда исходный код страницы представляет собой стену минифицированного кода.

Два предостережения. Не каждый сайт публикует структурированные данные, и инструменты, которые на них полагаются, ничего не возвращают для страниц без разметки. И страница может содержать несколько типов схем одновременно (хлебные крошки, организация, товар), поэтому убедитесь, что вы читаете блок Product а не что-то рядом с ним.

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

Шаг 2: Извлечение названия, артикула, цены и изображений из структурированных данных

Когда JSON-LD присутствует, извлечение данных простое, поскольку поля имеют метки. Инструмент, такой как экстрактор схем электронной коммерции считывает название, цену, валюту, наличие, бренд, артикул, GTIN, рейтинг и изображения из schema.org JSON-LD, microdata и OpenGraph, что охватывает большую часть того, что нужно дизайнеру.

Если вы предпочитаете самостоятельно написать скрипт для парсинга данных о продукте по URL, процесс будет коротким. Получите страницу, найдите каждый ld+json скрипт, распарсите каждый как JSON и выберите объект, тип которого равен Product. Затем прочитайте эти поля:

  • name: название продукта
  • sku или gtin: идентификатор, который вы укажете в заказах на покупку
  • brand: производитель
  • image: один URL или список URL
  • offers: цена, валюта и наличие

Следите за парой «цена и валюта». Это отдельные поля, и если вы примете число без указания валюты за евро, ваш бюджет незаметно выйдет из-под контроля. Записывайте оба значения каждый раз.

Проверьте, как перечислены изображения. Некоторые сайты предоставляют одно главное изображение, другие — полную галерею. Для презентационных досок вам нужна версия с самым высоким разрешением, поэтому посмотрите на шаблон URL и определите, существует ли вариант большего размера.

Преимущество этого подхода — стабильность. Поскольку структурированные данные находятся в собственном теге скрипта, редизайн сайта, изменяющий макет, редко нарушает их работу, поэтому ваш парсинг гораздо менее хрупкий, чем любой, построенный на селекторах.

Шаг 3: Откат к парсингу макета и обработка заблокированных или JavaScript-страниц

Некоторые страницы не содержат полезных структурированных данных. В этом случае вы анализируете видимую разметку, находя элементы по их тегам и CSS-классам. Руководство по веб-скрапингу на Python для получения информации о продуктах демонстрирует этот подход, используя конкретные селекторы, такие как заголовок product-title, для извлечения названия.

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

Часто возникают еще два препятствия:

  • Блокировка. Крупные розничные продавцы отказывают в простом запросе скрипта. Отправка реалистичных заголовков запросов помогает, хотя некоторым сайтам требуется большее.
  • Рендеринг JavaScript. Если цена или галерея появляются только после выполнения скриптов страницы, простой запрос видит пустую оболочку. Для таких страниц вам понадобится браузер без интерфейса, такой как Playwright или Selenium, который загружает страницу так, как это сделал бы браузер человека, прежде чем вы сможете ее прочитать.

Если это звучит как больше инженерии, чем студия дизайна готова взять на себя, то это справедливо. Именно для этой ниши и создан Web Clipper от ArchiBoard на базе ИИ: он извлекает фотографии, цены и артикулы из URL поставщика, без необходимости поддерживать селекторы или настраивать рендеринг. Какой бы путь вы ни выбрали, протестируйте его на нескольких реальных URL от каждого поставщика, прежде чем доверять ему полный проект. Успех на одном сайте мало что говорит о следующем.

Шаг 4: Нормализация валюты, удаление дубликатов и предоставление смет

Знать, как извлекать данные о продуктах из URL, — это только половина работы, потому что необработанные данные еще не являются полезными. Последний шаг делает их сопоставимыми.

Нормализация валюты. Сохраните исходную цену и валюту, как они были получены, затем конвертируйте их в базовую валюту вашего проекта по курсу, который вы записываете вместе с датой. Сохраните исходную цифру, потому что курсы меняются, а поставщики выставляют счета в своей собственной валюте. ArchiBoard обрабатывает это с помощью оперативных многовалютных смет, поэтому каждая позиция конвертируется в валюту проекта без необходимости использования второй таблицы.

Удаление дубликатов. Один и тот же продукт часто появляется по разным URL: параметры отслеживания, цветовые варианты, региональные домены, завершающие косые черты. Удалите ненужные вам строки запроса, приведите хост к нижнему регистру и используйте SKU или GTIN в качестве основного ключа, если он существует. Две записи с одинаковым SKU от одного поставщика — это почти наверняка один и тот же продукт.

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

Загрузите данные в смету. Когда записи будут очищены, они должны быть привязаны к комнатам, а не оставаться в общем списке. Назначьте каждый продукт в соответствующую комнату, установите количество, и пусть итоги будут подсчитаны по каждой комнате и по проекту в целом. Если вы подбираете напольное покрытие, например, чистый набор записей облегчит сравнение вариантов в каталоге паркета или в базе данных поставщиков паркетной доски”]} намного быстрее, поскольку каждый кандидат показывает одни и те же поля рядом.

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

Читайте также