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

Оглавление

Последние годы интернет-торговля переживает абсолютный бум. Кризис с covid в 2020 году в разы ускорил этот процесс. И если в оффлайне в увеличении продаж большую роль играл мерчандайзинг — правильная выкладка товаров на полке, то в онлайне многое решает оформление карточки товара. И за лучшее представление (а значит, и за лучшую конверсию) разворачивается нешуточное соперничество.

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

Такие сотрудники удаленно или в офисе целыми днями переносили описания и характеристики из pdf и бумажных проспектов производителей, фотографировали товары, писали короткие описания.

Примерно вот так, да
Спустя 10 лет в этом практически нет необходимости: почти все товары УЖЕ есть в открытом доступе — на сайтах конкурентов или производителей. Так зачем делать двойную работу, если можно быстро и аккуратно, без человеческих ошибок скопировать себе все данные? Другой частой задачей является парсинг товаров конкурентов в целях сравнения цен. В этом случае появляется проблематика сравнить товары на источнике парсинга и на искомом сайте по единому идентификатору (как правило, это артикул, пара бренд + артикул, или штрихкод). Встречаются случаи парсинга товаров для переноса между приложениями или сервисами одного владельца (например, спарсить товары с сайта и загрузить их в 1С или «Мой склад»). Либо спарсить товары в виде фида для рекламных систем.

Форматы парсинга интернет магазинов

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

Как правило, чаще всего парсинг выполнен в виде таблицы csv или xls в формате: строка — товар, атрибуты разбиты по столбцам. Такой вид подходит под большинство надстроек импорта популярных cms, например, импорт Bitrix, Insales, Мегагрупп и т. п.

Ситуация становится интереснее, если нужно спарсить товары с вариациями или торговыми предложениями (размеры, цвета одежды). Чаще всего применяется формат: каждая модификация — строка, первая строка серии — основной товар, вся группа имеет уникальный идентификатор принадлежности. Однако и тут бывают исключения, например, стандартный загрузчик CMS Bitrix требует разных таблиц для основного товара и для загрузки торговых предложений, связанных по единому ID.

Совершенно различные требования предъявляют плагины загрузки и в отношении картинок: какие-то требуют относительной ссылки на уже размещенное изображение, какие-то — ссылки на источник, откуда уже сами скачивают и размещают в файловой структуре на сервере.

Конечно, если данные парсинга будут использоваться в самописных системах или для совсем уж узких нужд, формат может быть еще экзотичнее — xml, json, или sql — для импорта напрямую в базу данных.

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

Обзор инструментов для парсинга товаров ИМ

Существует множество программ, приложений и сервисов для парсинга в целом. Какие-то более заточены для парсинга в SEO-задачах, другие — для мониторинга цен и остатков, но мы рассмотрим парсеры именно для парсинга товаров интернет-магазинов. Основное отличие — в гибкости настройки под парсинг товарных карточек, способности обходить защиты, и скорости (наличие многопотоковости).

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


Десктопные парсеры — Datacol и ContentDowloader

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

Парсер Datacol
Главный интерфейс парсера Datacol

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

Парсер ContentDownloader
Главный интерфейс парсера Content Downloader X1

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

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

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


Онлайн-сервисы — import.io, octoparse.io, cloudparser.ru

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

Некоторые парсеры могут настраиваться прямо из админпанели под парсинг конкретного сайта.

Множество существующих онлайн-парсеров обусловлено различными нишами: сравнение цен, парсинг и импорт товаров в социальные сети, прямой импорт в cms.

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


Сервисы парсинговых услуг по подписке — Catalogloader, XMLDatafeed

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

Онлайн-сервисы просты, однако если вам встретится интернет-магазин с защитами или потребуются сложные функции, то вряд ли справятся. К тому же вы ограничены производительностью сервера.
Как правило, они приспособлены к парсингу распространенных магазинов и умеют отдавать данные по подписке по расписанию (что больше всего удобно для сравнения и обновления цен).
Если вы хотите спарсить небольшой малоизвестный магазинчик, будьте готовы к тому, что настраивать парсер придется через службу поддержки — а значит, и за дополнительную плату.

Хороший обзор для парсинговых услуг по подписке: Парсеры онлайн


Парсеры-надстройки для CMS

Множество предложений представлено на маркетплейсах и форумах соответствующих CMS, например:
«Автоматическая обработка прайс-листов» для OpenCart.

Парсер OpenCart
Скрин основного окна парсера OpenCart

Парсер настраивается прямо из админпанели OpenCart или OcStore. Задаются значения селекторов на сайте-источнике, выбирается алгоритм поиска url товаров, и определяется периодичность и другие параметры парсинга.

В итоге происходит синхронизация товарных матриц источника и вашего сайта.

Подобный образом работает и «Сотбит: Парсер контента» для Bitrix:

Парсер Bitrix
Скрин интерфейса парсера Bitrix

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

Функционал ставится внутри системы управления вашего сайта. Там же настраиваются границы парсинга (шаблон на конкретный сайт) и синхронизация с вашим каталогом.

Минусы — вы зависимы от кода источника, а зачастую он все же меняется: хорошие интернет-магазины постоянно работают над внешним видом, соответственно, меняют код вывода. Значит, совсем забыть о парсинге не получится — придется периодически его перенастраивать.

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

Еще одна возможная проблема — несоответствие структуры источника и вашего сайта. Вполне возможен “пересорт” товаров в ошибочные категории.


Парсер как самописный функционал у вас на сервере

Зачастую хорошим решением кажется написать свой парсер. Как правило, при этом используется стек php или Python. Такой скрипт можно заказать под конкретные нужды и форматы, с обновлением и синхронизацией своих данных, с запуском по расписанию и другими фишками.
Самая большая беда в том, что код источника частенько меняется, и парсер просто перестает работать. Сайты фриланса полны запросов по типу «парсер перестал работать, ищу того, кто его доработает». Часто программисту невыгодно лезть в давно забытые, пусть даже и свои дебри, и разбираться, почему не работает его программа. Либо просто банально нет времени на этот заказ. Приходится искать нового программиста, а может быть, и писать все заново.

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

Как собрать ссылки для парсинга товаров интернет-магазина

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


Прочитать карту сайта

По адресу /sitemap.xml или подобному (лайфхак: путь к карте сайта можно узнать из файла /robots.txt — он точно находится в корне сайта.

Нахождение sitemap в robots.txt
Нахождение sitemap в robots.txt

Плюсы: скорость — карта читается очень быстро. Стоит только очистить ее от категорий, страниц блога, фильтров итп (хотя и с этим бывают проблемы, если урл задан не многоуровневый).

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

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


Просканировать сайт «пауком».

Часто этот функционал встречается у десктопных парсеров. Суть в том, что парсер переходит по всем найденным страницам, сканируя ссылки на товары на них, переходит по ним, сканирует их и т. п. В итоге получается огромный массив всех найденных ссылок, которые нужно отфильтровать (как правило, встроенным функционалом).

Плюсы: практически не нужно ничего делать, только нажать кнопку и задать фильтр на формат урлов с товаром (например, /goods/)

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

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


Составить урлы товаров перебором

Подходит только для урлов с предсказуемым видом, например, /goods/10002. В таком случае можно составить список вариантов и пройтись по ним всем.

Редко встречающийся способ, однако нам встречался и такой, в отсутствие или в дополнение к остальным 🙂


Перебор каталога

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

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

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

Парсинг картинок с сайта интернет-магазина

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

  1. Достаточно ли указать ссылки на фото на источнике, или необходимо сначала загрузить фото на сервер, а потом указать ссылки на них в файле импорте. Например, Bitrix сам качает фото по ссылкам и распределяет у себя в файловой структуре максимально эффективным способом. А самый распространенный бесплатный плагин для OpenCart требует указания относительных ссылок на файлы, предварительно скачанные и размещенные на сервере.
  2. Формат «основное фото — дополнительные фото». Некоторые загрузчики разделяют эти данные на два столбца, другие принимают массивом, считая первое фото основным, остальные — дополнительными. Функционал импорта некоторых saas сервисов требует разделения каждого фото в отдельный столбец в конце таблицы.
  3. Формат разделителя — чаще всего встречаются запятая, точка-запятая. Реже, но бывают и сложные конструкции вида “/images.jpg|title”.

Соответственно, необходимо сразу определить формат, так как при парсинге соблюсти его гораздо легче, чем переделывать постфактум.

Одна из распространенных проблем — водяные знаки (вотермарки, watermarks). Это довольно сильно усложняет процесс парсинга. Однако некоторые cms сайтов-источников оставляют открытыми пути к оригинальным фото (например, в случае автоматического наложения водяного знака силами cms). Тогда мы можем логически подобрать алгоритм изменения урла и спарсить оригинальные фото.

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

Подробно рассмотрели парсинг картинок в этой статье: Как парсить картинки

 

Парсинг характистик товаров интернет-магазина

Характеристики — та самая информация, которую изучают наиболее подробно в технически сложных товарах. Собственно, только исходя из них зачастую и выбирают товары. Значит, перенести их нужно максимально точно. Часто встречающиеся варианты отображения характеристик на сайтах-источниках — характеристики в специальных полях и в области описания, текстом. Если первый случай достать довольно просто, то в случае текстовых данных может быть много мусора. Почему? Представьте, что данные о товаре вносил контент-менеджер или маркетолог производителя руками в визуальном редакторе описания. Нажал перевод каретки — образовались абзацы <p> в другом товаре вспомнил про маркированные списки — оформил так. Словом, нет гарантии одного строгого формата оформления. Соответственно, парсер не сможет однообразно выхватывать эти данные — будет много мусора.
Характеристики в тексте описания
Характеристики в тексте описания
Характеристики в полях свойств
Характеристики в полях свойств

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

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

Стандартный формат парсинга характеристик для дальнейшей загрузки — разбивка по столбцам. Однако некоторые торговые площадки (например, prom.ua) используют формат пар столбцов («наименование характеристики»|«значение характеристики»)
Переработать в такой формат после парсинга достаточно тяжело, а вот настроить парсер для этого формата — намного проще.
Заранее уточните этот момент.

Частый факап, который допускают при парсинге — автоматическое изменение формата данных в excel. Например, «2.1» в столбце «Вес» превратится в «02.янв». Пересохранив такой файл, вернуть данные практически невозможно.

Для производителей, начинающих артикулы с «00000…» уготован отдельный котел в аду. Эксель нули убивает всегда — и товар потеряет привязки. Вынуждены искать решение и в этом случае.

Используем подстановку апострофа в начале всех цифровых данных, убедившись по ходу парсинга, что он не встречается изначально — (например, в обозначении дюймов — тогда автоматом меняем его на кавычки).

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

Автоматическая смена формата данных XLS

Парсинг вариативных товаров

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

Как и всегда, при настройке парсинга нужно учитывать формат для последующего использования, так как каждая cms имеет различные требования.
Например, стандартный загрузчик Битрикса требует разные файлы для основных товаров и торговых предложений, связывая их через ID основного товара. Надстройка «Kda import Excel» может импортировать из одного файла, считая разные строки, объединенные одним общим идентификатором — торговыми предложениями.
OpenCart имеет отдельную структуру базы данных для модификаций. Вариантов море и, конечно, учитывать их нужно на этапе подготовки к парсингу.

Зачастую товар имеет несколько свойств для вариаций, например «Цвет», «Размер», «Материал». В таком случае необходимо на этапе парсинга создать комбинации этих свойств и создать множество торговых предложений.

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

При анализе сайта-источника с вариативными товарами проследите за тем, меняется ли урл товара при выборе вариантов. Если да — скорее всего, это различные товары, выведенные в одну карточку при помощи функционала related (похожие товары, товары одной серии), а значит, собрать их можно как отдельные. Если урл не меняется, придется анализировать код на наличие массива данных (скорее всего, это будет json).

Парсинг структуры сайта интернет-магазина

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

  • хлебные крошки отсутствуют. В таком случае мы проходимся по подразделам и запоминаем прошедшее дерево категорий, привязывая его к урлу. Путь к конечной категории записываем в итоговый файл.
  • один и тот же товар привязан к разным разделам, и в зависимости от того, из какой категории перейти к товару, крошки будут разные.
    В таком случае мы, скорее всего, спарсим два товара, которые будут отличаться разделами, а возможно — и урлами. После парсинга необходимо сделать проверку на дубли по наименованию или артикулу. Если позволяет система импорта — считать эти товары одним, привязав его, как и на источнике, к двум разным разделам.
  • хлебные крошки показывают 2–3 подраздела, однако, «провалившись» в самый глубокий, обнаруживаем там еще подразделы. Довольно частая ситуация и, скорее всего, это фильтры, оформленные как подразделы. Делается это в целях лучшего SEO-продвижения. В данном случае есть два пути: считать категорию так, как она реально определена на источнике, а более глубокие подразделы, являющиеся фильтрами, просто игнорировать. Либо же пройтись по товарам, как и в случае отсутствия хлебных крошек, с каждым новым подразделом или фильтром записывая их в цепочку и выведя в конце итоговую глубину. Однако, скорее всего, тут будут дубли, как и во втором случае.

Большинство функционалов парсинга выводит структуру по подобию хлебных крошек, разделяя подразделы «/».

Однако довольно часто встречаются наименования подкатегорий, также написанные через слэш (например, «доска сухая/шлифованная»), и в таком случае они делятся на две категории. Поэтому лучше использовать уникальный разделитель, например, @.

Парсинг описаний товаров интернет-магазина

При парсинге описаний встречаются следующие проблемы:

  1. Наличие в тексте наименования, контактов, адресов магазина источника, что сразу выдаст на вашем сайте заимствование контента. Тут можно настроить автозамену при парсинге «на лету».
  2. Наличие в тексте иллюстраций — в таком случае мы скачиваем их, подставляя в теги img и a относительные ссылки на скачанное. Далее при заливке можно загрузить эти иллюстрации отдельно в файловую систему сайта, и массово заменить пути в тегах на медиафайлы.
  3. Наличие классов, стилей. Тут можно массово заменить классы, а со стилями работать отдельно на сайте-реципиенте.

В зависимости от последующего использования текст можно собрать как с html-разметкой, так и в виде простого текста (plain text).

Ну и тут стоит упомянуть об авторских правах и смысле от скопированного текста (если это, конечно, не рекламация от поставщика). Старайтесь делать свой контент! 🙂

Парсинг цен и остатков товаров ИМ

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

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

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

Мы встречали парсеры, которые узнавали скрытые остатки методом добавления в корзину: парсер эмулирует добавление в корзину одного и того же товара до тех пор, пока сайт не скажет: «такого количества нет на складе» — значит, это и будет актуальным остатком.

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

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

Обход защит от парсинга интернет-магазина

Чем крупнее будет ваша цель, тем лучше и параноидальнее она будет защищаться 🙂

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

Это объяснимо: нагрузка на сервер от парсеров растет, уникальный контент — конкурентное преимущество этого магазина.

Самые частые способы защит:

  • мониторинг ip-адреса и блокирование в случае частых и однообразных обращений
  • использование CDN сервисов, например, CloudFlare
  • бан по cookies (слежение за сессиями)
  • наложение водяных знаков на этапе обработки фото (не силами плагинов cms)
  • введение капчи для каждого посетителя (да-да, и такое встречалось!)
  • динамически изменяющиеся классы элементов, затрудняющие парсерам «прицепляться» к границам
  • всевозможные сервисы, отслеживающие поведение пользователя при запросах и фильтрующие поведение, которое отличается от человеческого
  • ограничение выдачи результатов на логин-сессию в сутки (для сервисов, требующих авторизации)

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

В основном обход защит сводится к использованию прокси-серверов различной степени качества. Чем популярнее сервис, тем более качественные прокси используйте.

Обязательно чередование в случайном порядке и соблюдение правила: количество прокси должно быть минимум в два раза больше количества потоков.

Основные методы и рекомендации обхода парсинга выглядят так:

  • хорошие платные прокси в достаточном количестве, перебираемые в случайном порядке
  • набор различных представлений браузеров, перебираемых в случайном порядке
  • случайный тайминг между запросами сервера
  • правильно подобранные заголовки в запросах к серверу, эмулирующие обычную сессию пользователя
  • настройка cookies (некоторые сайты требуют регистрации при каждом обращении, некоторые, наоборот, банят по этому признаку)
  • использование сервисов, разгадывающих капчу по API
  • парсинг мобильных версий сайтов
  • поиск прямых url на оригинальные фото (в случае, если водяной знак наложен на уровне cms)

Как правило, комбинация этих усилий приводит к благополучному парсингу 99% сайтов. Оставшийся 1% просто попадает в неприемлемое соотношение (ценность данных/затраченные усилия).

Что бы мы сделали на месте сисадмина крупного ИМ, чтобы защититься от парсинга? Мы бы выложили базу-фид на видном месте 🙂

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

Скорость и оптимизация парсинга интернет-магазина

В случае с небольшими интернет-магазинами оптимизация скорости может показаться избыточной, но представьте, что вы собираетесь парсить интернет-гипермаркет с 1 млн позиций? Либо вам нужно настроить парсинг цен с площадки объявлений, содержащей несколько миллионов публикаций…

Простой расчет: время запроса парсера + получение html документа одного из топовых магазинов сантехники — около 1,5 секунд.

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

Итого: 2 секунды на один товар. Если учесть, что всего товаров 500 000, итоговое время парсинга получится около 270 часов.

Конечно, это время очень велико, основное решение тут — делать множество одновременных запросов к сайту-источнику. Так, использование хотя бы 30 потоков даст нам уже приемлемые 9 часов.

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

Там, где есть защиты от парсинга, предпочтительнее использовать как можно большее число прокси, чтобы:

а) избежать искусственно выставленных таймингов между запросами;
б) увеличить количество запросов без риска занести прокси в черный список по частоте обращений.

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

Сколько стоит спарсить сайт интернет-магазина

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

Однако на рынке все же часто встречаются предложения парсинга за объект.

По нашему опыту, парсинг магазинов с 10 товарами мало чем отличается от парсинга аналогичного магазина со 100 000 товарами (время парсинга в таких кейсах можно не считать как временные затраты, потому что они идут фактически фоново). Поэтому в этих диапазонах стоимость будет примерно одинакова — от $30 до $50 (2000–3500 рублей).

У интернет-магазинов с бОльшим диапазоном товаров, как правило, появляется больше трудозатрат на тестирование (нужно посмотреть, насколько верно работает скрипт на различных типах товаров). К тому же, скорее всего, такие магазины уже ставят какие-либо защиты.

Применение прокси для обхода защит приведут к удорожанию проекта примерно на $10–20 (в районе 1000 рублей).

Самый дорогой и трудозатратный парсинг — популярных площадок объявлений либо крупных и известных гипермаркетов. Кроме всех возможных защит, такие сайты имеют сложное дерево каталогов, вариативные товары или структурно разные карточки объектов (например, разные типы недвижимости требуют разных настроек). Парсинг таких сайтов может стоить до $150–$200 (10000–15000 рублей).

Это средние и примерные цены по рынку. Разные существующие сервисы могут отдавать результаты парсинга по API, сразу заливать данные в вашу cms, синхронизировать с 1С и парсить по графику. Такие варианты мы, конечно, в этой статистике не учли.

Законно ли парсить интернет-магазины

Если мы говорим именно про интернет-магазины (не про площадки объявлений с персональными данными продавцов), ответ вполне однозначный: ничего противозаконного конкретно в парсинге нет. При соблюдении нескольких условий:

  1. Вы не нарушаете ничьих авторских прав, то есть делаете парсинг, но не используете информацию, являющуюся объектом авторских прав, в своих целях.
  2. Вы не нарушаете закон о персональных данных — не собираете и не обрабатываете такие данные
  3. Собираете только открытую и публично доступную информацию, не совершая хищения или несанкционированного доступа к скрытым данным.
  4. При парсинге не нарушается работоспособность сайта-источника (и не создается помех для его полноценной работы)

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

А вот если интернет-магазин сам сфотографировал товар и выложил (тем самым создав конкурентное преимущество), использовать такие фото будет неправомерно.

Цены и остатки не являются объектами авторского права, и сбор их при соблюдении прочих условий вполне законен.

В заключение

В 2010 году, когда мы начинали работать с контентом, один крупный онлайн-магазин сантехники, существующий и поныне, содержал штат из 20–30 контент-менеджеров в офисе, которые в течение пары лет руками вносили характеристики, контент и подбирали в интернете картинки по артикулам. Сегодня эту же работу можно сделать за считанные дни, используя передовые технологии и уже сделанную до нас работу.

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

Открываете ли вы интернет-магазин, следите за ценами конкурентов, тестируете новое направление или собираете базу организаций — грамотный парсинг будет недорогим и быстрым решением как этапе MVP, так и в случае постоянной работы с контентом.

Ну а мы в markedata.io готовы прийти на помощь, если в процессе самостоятельного парсинга у вас возникнут проблемы!

Заказать парсинг

от 2000 рублей, срок выполнения от 2 часов

Спарсим товары
с любого сайта

Срок – 1 рабочий день, начнем сегодня.

Цена – от 1500 рублей.

Tell us about your project

Подписывайтесь на наш канал

Ежедневно выкладываем
свежие базы в удобном формате!

Заказать парсинг