Как получить данные с веб-страницы, не нарушив правил и не утонув в сложном коде? Ответ простой: с помощью e-commerce скрапинга и правильных сопутствующих инструментов. Все детали мы и рассказываем дальше статье – здесь вы узнаете, как организовать полноценный процесс сбора данных с интернет-магазинов,
какие инструменты кроме скрапера вам понадобятся и что дальше делать с собранной информацией.
Чтобы понять, что такое скрапер, можно представить маленького робота, который ходит по страницам сайта, читает их код (HTML) и записывает себе нужную информацию. Скрапер для интернет-магазинов делает это с десятками, сотнями и тысячами магазинов подряд.
Многие начинают с простого бесплатного инструмента: вставляют несколько ссылок и радуются результату. В небольших масштабах это работает, но когда нужно собирать данные в реальных условиях, возникают сложности.
Хороший e-commerce скрапер выполняет две задачи. Сначала он загружает страницу, а потом специальная программа (парсер) находит в коде нужные элементы — названия товаров, цены, фотографии. Парсер запоминает, где искать эти данные, чтобы в следующий раз робот быстро находил нужное.
Проблема есть в том, что интернет-магазины часто меняют дизайн и структуру страниц. Если изменится название раздела или расположение элемента, робот перестанет находить данные и вернёт пустые результаты. Поэтому многие проекты по сбору данных останавливаются уже на первой неделе — скрапер один раз собрал цены, на следующий день перестал работать, а никто не заметил, пока не посмотрели на отчёты.
Существуют два типа скрапера. Первый — это очень простой скрапер, где нужно просто указывать мышкой на нужные элементы на странице (например, на цену товара) и нажимать кнопку. Он сам всё собирает в таблицу. Сначала кажется, что это настоящее волшебство, но такие скраперы часто ломаются, если сайт немного меняется. Второй вид — это скрапер, который нужно настраивать более подробно. Он может казаться сложным для настройки в начале, но зато лучше работает, когда сайт меняется. Выбирайте тот, который вам больше подходит, но помните: чем больше данных вам нужно, тем сложнее будет работать с любым скрапером.
Один лишь скрапер подойдет для небольших тестов, но когда вы начинаете отправлять много запросов, он быстро перестает работать. Сайты замечают повторяющиеся обращения и блокируют вас. Поэтому чтобы скрапинг работал стабильно, нужны дополнительные инструменты: прокси-серверы для смены IP-адреса, “безголовые” браузеры, которые умеют запускать JavaScript, смена user-agent (чтобы скрыть, что работает бот), инструменты для обхода капчи и системы мониторинга, которые предупреждают, если что-то сломалось.
Все вместе эти инструменты делают ваш трафик похожим на обычных посетителей и помогают собирать данные даже тогда, когда сайты хотят остановить автоматизацию.
В нашем блоге есть подборка статей, которые помогут разобраться с этими дополнительными инструментами и решить разные проблемы:
Каждый из этих инструментом помогает сделать сбор данных из интернет-магазинов стабильнее, пока конкуренты плетутся позади без таких решений.
Интернет-магазины внимательно следят за подозрительной активностью на сайте: если с одного IP-адреса приходит слишком много запросов или появляются резкие всплески активности ночью, сайт может заблокировать такого пользователя.
Прокси-сеть помогает вашему скраперу «маскироваться», меняя IP-адреса и распределяя запросы так, чтобы с каждого адреса шло немного трафика и он не выглядел подозрительно.
В основном скрапинга данных интернет-магазинов используется два вида прокси:
Для крупных и известных магазинов лучше использовать резидентные прокси, для недорогих тестов — серверные, а ещё можно сочетать оба варианта.
Лучшие прокси-серверы для доступа к ценным данным со всего мира.
Прокси-сеть сама по себе малоэффективна, если не менять IP-адреса регулярно. Чтобы скрапер работал стабильно и не попадал под блокировки, важно автоматически менять прокси после каждого запроса или после обработки группы товаров. Современные инструменты для скрапинга умеют делать это сами — они следят за работоспособностью каждого прокси и сразу заменяют те, которые работают медленно или были заблокированы.
Кроме того, некоторые платные сервисы предлагают удобные панели с графиками и статистикой, где можно увидеть состояние всей прокси-сети. Это помогает вовремя заметить проблемы.
Также имеет смысл менять не только IP, но и user-agent — специальный заголовок, который сообщает сайту, с какого устройства и браузера идёт запрос. Если постоянно использовать один и тот же user-agent, сайт сможет легко распознать ваши запросы как автоматические и заблокировать их. А постоянная смена user-agent помогает маскировать скрапер под обычного пользователя и снижает вероятность блокировок.
Сайты, где много JavaScript, нужно обрабатывать с помощью безголового браузера — это специальная программа, которая загружает страницу так же, как обычный браузер Chrome, а потом читает готовую страницу целиком. Автоматизация браузера также помогает делать снимки экрана для проверки картинок и нажимать кнопки, которые спрятаны за разными скриптами.
Если кнопка «Добавить в корзину» запускает дополнительные запросы к серверу, или цены появляются только после прокрутки страницы, обычные запросы не помогут. Автоматизация браузера нужна, когда скрапер должен кликать по элементам, ждать загрузки данных через XHR или считывать информацию, которая подгружается постепенно. Еще один признак — бесконечная прокрутка списка товаров, которую может обработать только настоящий браузер.
Вот три самых популярных инструмента для автоматизации браузера в скрапинге интернет-магазинов:
К примеру, с помощью Playwright можно написать простую программу, которая по очереди открывает 10 страниц с товарами, ждёт, пока на каждой из них загрузится цена, а затем сохраняет эти данные. Весь код для такого скрапера займёт меньше 50 строк. Если добавить к нему автоматическую смену IP-адресов через прокси, получится инструмент, который сможет собирать актуальные цены каждый час без блокировок.
Когда сайт показывает капчу — специальное задание, чтобы убедиться, что вы не робот, — ваш скрапер может отправить эту задачу в специальный сервис для её решения. Такие сервисы используют и людей, которые вручную решают капчи, и автоматические системы распознавания. Робот ждёт ответ, получает специальный токен, вставляет его на сайт и продолжает работу. Популярные сервисы берут плату за каждое решенное задание, поэтому это нужно учитывать в бюджете. Частая смена прокси и использование куки помогают снизить количество капч.
Некоторые команды создают собственные внутренние системы, где вручную решают капчи и сохраняют пары «вопрос-ответ». Эти данные используются для обучения простой модели, которая помогает автоматически обходить капчи. Такой подход сохраняет конфиденциальность данных и уменьшает затраты на платные сервисы.
Сбор данных — это только половина дела. Если скрипт упадет, миллион строк в памяти исчезнут, поэтому нужно сразу сохранять данные и делать в понятном для команды формате.
Обычные SQL-базы хорошо подходят, когда структура данных известна и почти не меняется — например, поля «id товара», «название» и «цена».
Но при скрапинге интернет-магазинов часто встречаются более гибкие данные, например, разные варианты товара или дополнительные фотографии, и в таких случаях удобнее использовать NoSQL базы.
Облачные хранилища объединяют преимущества обоих подходов и могут масштабироваться по мере необходимости. Выбирайте вариант, который лучше всего подходит по скорости работы, стоимости и навыкам вашей команды.
Инструменты из списка ниже помогают сохранять, организовывать и получать доступ к данным, которые вы собираете при скрапинге интернет-магазинов:
Важно сохранять дату сбора и URL товара. Данные записываются один раз, а читаются много раз. А для очистки и объединения данных можно использовать легкие инструменты, например, Pandas или Dask.
Получите доступ к прокси-сети с 200+ локациями и 10+ миллионами IP-адресов.
Сырые данные из HTML выглядят очень неаккуратно, если просто вставить их в таблицу. Например, одни пишут размер «XL», другие — «Extra-Large», цены могут содержать запятые, а дубликаты появляются из-за разных вариантов одного товара.
Тем, кто работает с данными, нужны чёткие и аккуратные таблицы. Если не очищать данные, скрапер может показать одинаковые товары как разные, а графики с такими данными будут некорректными. Поэтому после сбора данных обязательно нужно их обработать и привести в порядок, иначе никто не сможет доверять полученным результатам.
Чтобы данные были полезными, их нужно почистить и проверить. Вот основные шаги:
Для этого достаточно простого кода на Python и популярных инструментов для работы с данными. Эти проверки нужно встроить в процесс, чтобы «сломанные» строки не попадали в базу.
Если вы собираете цены из разных стран, помните, что на них влияют налоги, стоимость доставки и курс валют. Лучше сохранять и оригинальные цены, и данные, которые приведены к единому виду — например, без налогов и в одной валюте. Так аналитики смогут сами решить, учитывать ли НДС.
Полезно настроить ежедневную проверку данных, которая считает количество записей, находит пустые или неправильные поля и отправляет вам отчёт по электронной почте. Такой скрипт может работать как отдельный скрапер, который обращается к вашему собственному API, собирает данные, очищает их и проверяет качество за один запуск.
Скрапер для интернет-магазина — это только начало. Настоящая сила приходит с эко-системой, которую вы вокруг него создаете: пул прокси, чтобы оставаться незаметным; безголовые браузеры, чтобы правильно загружать страницы с JavaScript; сервисы для решения капчи, чтобы обходить защиту; базы данных для хранения миллионов записей; скрипты очистки, чтобы данные были аккуратными; и системы мониторинга, которые сразу сообщают о проблемах. Каждый из этих компонентов лучше разрабатывать и тестировать отдельно, а потом объединять в единую цепочку.
Внимательно следите за логами, отслеживайте ошибки и обновляйте селекторы, когда сайты меняются, чтобы скрапер не перестал работать. Когда весь процесс работает автоматически и данные каждый день приходят готовыми к использованию — значит, вы всё сделали правильно. Не забывайте работать ответственно: соблюдайте законы, уважайте правила robots.txt и не перегружайте сайты лишними запросами.
Будьте любознательны, улучшайте свой скрапер, и со временем он станет вашим верным помощником в развитии бизнеса.