Парсинг данных с сайта: как это устроено
Что такое парсинг и какие задачи им решают, чем браузерный подход отличается от HTTP-запросов, что ломает парсеры и где проходят границы закона.
Все статьи гида Парсинг данных · 11
Парсинг - это извлечение данных со страниц, предназначенных для человека. Задача выглядит простой ровно до первого запуска на объёме.
Что такое парсинг и что им решают
Практические задачи, которые за этим стоят:
- Мониторинг цен и наличия у конкурентов и поставщиков.
- Сбор каталогов для наполнения своего.
- Аналитика рынка: ассортимент, позиционирование, изменения.
- Наполнение внутренних систем данными из внешних источников.
- Проверка собственных данных на площадках: как выглядят ваши товары.
Общее у всех: данные существуют, но не отдаются удобным способом. Если у источника есть API, парсинг не нужен - работать с API дешевле и надёжнее во всех отношениях.
Браузер против HTTP
Основная развилка, определяющая стоимость и надёжность решения.
HTTP-запросы. Вы запрашиваете страницу и разбираете полученный ответ.
Плюсы: быстро, дёшево по ресурсам, легко распараллеливается. Тысячи страниц в час на обычном сервере.
Минусы: видно только то, что сервер отдал сразу. Если содержимое дорисовывается скриптами, в ответе его не будет.
Браузер. Страница открывается по-настоящему, скрипты выполняются, вы работаете с итоговым результатом.
Плюсы: видно всё, что видит человек. Работают клики, прокрутка, авторизация.
Минусы: в десятки раз медленнее и тяжелее по памяти. Сто одновременных браузеров - это серьёзный сервер.
Практическое правило: сначала проверьте, есть ли данные в исходном ответе. Если есть - браузер не нужен, и решение будет в разы дешевле. Часто данные приходят готовой структурой в фоновом запросе, и достаточно обратиться к нему напрямую.
Инструменты для обоих подходов разобраны отдельно: парсинг на Python и обзор программ.
Что ломает парсеры
Четыре причины, и они требуют разных решений.
Изменилась вёрстка. Самая частая. Селектор указывает на элемент, которого больше нет. Лечится устойчивыми селекторами и явной ошибкой вместо пустого результата: парсер, молча собравший ноль записей, хуже упавшего.
Защита от сбора. Адрес попал под ограничение, появилась проверка. Лечится сменой типа адресов и снижением темпа - см. гид по прокси и решение капчи.
Объём. Работало на сотне страниц, встало на десяти тысячах. Лечится порциями, очередью и сохранением прогресса.
Данные пришли не те. Формат поля изменился, значение стало другого типа, появились дубликаты. Лечится проверкой данных на выходе, а не доверием к источнику.
Отдельно: источник может отдавать разное разным посетителям. Цены и наличие часто зависят от региона, авторизации и истории. Собранные данные могут быть верны и при этом не соответствовать тому, что видит ваш клиент.
Границы закона
Три разные вещи, которые обычно смешивают в одну.
Правила сайта. У большинства площадок в пользовательском соглашении есть запрет на автоматический сбор. Это договорные отношения: последствие - блокировка доступа, а при масштабе - претензии.
Персональные данные. Здесь начинается закон. Сбор контактов физических лиц регулируется, и «данные были в открытом доступе» не является достаточным основанием для их обработки - см. парсинг контактов.
Авторские права. Тексты, фотографии и описания - объекты авторского права. Собрать их для анализа и опубликовать у себя - разные по правовым последствиям действия.
Практическая позиция: факты и цифры собирать безопаснее, чем содержимое; агрегировать безопаснее, чем копировать; для себя безопаснее, чем публиковать. И если задача коммерческая и масштабная, вопрос стоит закрыть с юристом до разработки, а не после первой претензии.
Куда двигаться дальше
- Парсинг сайтов конкурентов - самая частая задача.
- Парсинг на Python - селекторы, ретраи, дедупликация.
- Парсинг товаров и таблиц.
- Выгрузка в Excel.
- Программы для парсинга - если писать код не хочется.
- Защита от парсинга - взгляд с другой стороны.
- Сколько стоит парсинг - из чего складывается цена.
- Парсинг маркетплейсов - отдельный случай со своими особенностями.
- Парсинг контактов - с обязательной оговоркой про закон.
Если задача - получить данные, а не научиться их собирать, см. страницу услуг.
В этом гиде
- Парсинг сайтов конкурентов: что можно собирать и зачемКакие данные о конкурентах имеет смысл собирать, как построить регулярный мониторинг, что делать с расхождениями и где проходит граница допустимого.
- Защита от парсинга сайта: что работает, а что нетКакие меры защиты от автоматического сбора действительно работают, какие только мешают пользователям, и как выбрать уровень защиты под свою ситуацию.
- Парсинг сайтов на Python: Playwright, ретраи, дедупликацияКакой стек выбрать под задачу, как писать селекторы, которые переживают правки вёрстки, как устроены ретраи и почему дедупликация нужна с самого начала.
- Парсинг товаров с сайта: цены, остатки, карточкиКак собирать карточки товаров, почему цена - самое ненадёжное поле, как сопоставлять товары между источниками и что проверять в собранных данных.
- Парсинг таблицы с сайта: три способаКак забрать таблицу со страницы: вручную, готовыми средствами и кодом. Что делать с объединёнными ячейками, пагинацией и таблицами, которые подгружаются скриптами.
- Сколько стоит парсинг сайта: из чего складывается ценаЧто влияет на стоимость сбора данных, почему одинаковые на вид задачи различаются в разы, из каких частей состоит цена и что спросить до заказа.
- Парсинг контактов с сайтов: как и что законноГде проходит граница между сбором открытых данных компаний и обработкой персональных данных, что требует закон, какие задачи решаются законно и почему рассылка по собранной базе не работает.
- Парсинг сайтов в Excel: выгрузка результатовВ каком формате отдавать собранные данные, почему Excel не всегда лучший выбор, как избежать типовых проблем с кодировкой и числами и как устроить регулярное обновление.
- Программы для парсинга сайтов: обзор инструментовКакие категории инструментов для сбора данных существуют, что закрывают готовые программы, где они упираются в потолок и как выбрать под свою задачу.
- Парсинг маркетплейсов: WB и OzonЧем маркетплейсы отличаются от обычных сайтов при сборе данных, что доступно через официальные интерфейсы, какие задачи решают продавцы и где проходят границы.
Вопросы и ответы
Законно ли парсить сайты?
Сбор общедоступных данных сам по себе не запрещён, но есть три границы: правила сайта, персональные данные и авторские права на содержимое. Первая - вопрос договорных отношений, вторая и третья - вопрос закона, и решать их надо до начала работы, а не после.
Чем парсинг через браузер отличается от HTTP-запросов?
HTTP-запрос забирает исходный ответ сервера: быстро, дёшево, но не видит того, что дорисовывается скриптами. Браузер открывает страницу целиком и видит итоговый результат, но работает в десятки раз медленнее и требует больше ресурсов. Выбор зависит от того, где лежат нужные данные.
Почему парсер перестал работать?
Чаще всего изменилась вёрстка: селектор указывает на элемент, которого больше нет. Второй по частоте случай - защита от сбора: адрес попал под ограничение и вместо данных приходит проверка. Различить их просто - посмотрите, что реально вернул сайт.
Видео по теме
Сделаю под ключ
Соберу парсер под ваш источник
С обходом защиты, прокси и выгрузкой в таблицу, базу или Telegram. Работает по расписанию без вас.
от 300 $ · 3-7 дней
«Очень быстрый парсинг, спасибо большое! Даже получилось чуть больше номеров, всем рекомендую! Делал заказ 2 раза, всё устраивает, буду обращаться ещё.»