Перейти к содержимому
PD
Парсинг данных Гид

Парсинг данных с сайта: как это устроено

Что такое парсинг и какие задачи им решают, чем браузерный подход отличается от HTTP-запросов, что ломает парсеры и где проходят границы закона.

Все статьи гида Парсинг данных · 11

Парсинг - это извлечение данных со страниц, предназначенных для человека. Задача выглядит простой ровно до первого запуска на объёме.

Что такое парсинг и что им решают

Практические задачи, которые за этим стоят:

  • Мониторинг цен и наличия у конкурентов и поставщиков.
  • Сбор каталогов для наполнения своего.
  • Аналитика рынка: ассортимент, позиционирование, изменения.
  • Наполнение внутренних систем данными из внешних источников.
  • Проверка собственных данных на площадках: как выглядят ваши товары.

Общее у всех: данные существуют, но не отдаются удобным способом. Если у источника есть API, парсинг не нужен - работать с API дешевле и надёжнее во всех отношениях.

Браузер против HTTP

Основная развилка, определяющая стоимость и надёжность решения.

HTTP-запросы. Вы запрашиваете страницу и разбираете полученный ответ.

Плюсы: быстро, дёшево по ресурсам, легко распараллеливается. Тысячи страниц в час на обычном сервере.

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

Браузер. Страница открывается по-настоящему, скрипты выполняются, вы работаете с итоговым результатом.

Плюсы: видно всё, что видит человек. Работают клики, прокрутка, авторизация.

Минусы: в десятки раз медленнее и тяжелее по памяти. Сто одновременных браузеров - это серьёзный сервер.

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

Инструменты для обоих подходов разобраны отдельно: парсинг на Python и обзор программ.

Что ломает парсеры

Четыре причины, и они требуют разных решений.

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

Защита от сбора. Адрес попал под ограничение, появилась проверка. Лечится сменой типа адресов и снижением темпа - см. гид по прокси и решение капчи.

Объём. Работало на сотне страниц, встало на десяти тысячах. Лечится порциями, очередью и сохранением прогресса.

Данные пришли не те. Формат поля изменился, значение стало другого типа, появились дубликаты. Лечится проверкой данных на выходе, а не доверием к источнику.

Отдельно: источник может отдавать разное разным посетителям. Цены и наличие часто зависят от региона, авторизации и истории. Собранные данные могут быть верны и при этом не соответствовать тому, что видит ваш клиент.

Границы закона

Три разные вещи, которые обычно смешивают в одну.

Правила сайта. У большинства площадок в пользовательском соглашении есть запрет на автоматический сбор. Это договорные отношения: последствие - блокировка доступа, а при масштабе - претензии.

Персональные данные. Здесь начинается закон. Сбор контактов физических лиц регулируется, и «данные были в открытом доступе» не является достаточным основанием для их обработки - см. парсинг контактов.

Авторские права. Тексты, фотографии и описания - объекты авторского права. Собрать их для анализа и опубликовать у себя - разные по правовым последствиям действия.

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

Куда двигаться дальше

Если задача - получить данные, а не научиться их собирать, см. страницу услуг.

В этом гиде

Вопросы и ответы

Законно ли парсить сайты?

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

Чем парсинг через браузер отличается от HTTP-запросов?

HTTP-запрос забирает исходный ответ сервера: быстро, дёшево, но не видит того, что дорисовывается скриптами. Браузер открывает страницу целиком и видит итоговый результат, но работает в десятки раз медленнее и требует больше ресурсов. Выбор зависит от того, где лежат нужные данные.

Почему парсер перестал работать?

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

Видео по теме

Все видео на YouTube-канале

Сделаю под ключ

Соберу парсер под ваш источник

С обходом защиты, прокси и выгрузкой в таблицу, базу или Telegram. Работает по расписанию без вас.

от 300 $ · 3-7 дней

Похожий кейсEtsy Keyword FinderПриложение для аудита ключевых слов Etsy на очереди задач: отправляете ID листинга и до 20 ключей, а фоновые воркеры проходят реальную выдачу шаг за шагом со скриншотами.

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

sotasoftdv · Kwork