Игорь ЗагоняйлоSEO Team Lead
Владислав ПанасюкFounder, CEO
Парсинг сайтов: что это, как работает и когда его заказывают
Парсинг сайтов - это автоматический сбор данных со страниц в таблицу или базу: программа сама открывает нужные адреса и выписывает названия, цены и характеристики товаров. Так магазин каждое утро видит цены конкурентов без ручной работы и быстрее наполняет каталог. Ниже разберем, что такое парсинг сайтов на практике, какими инструментами его делают, что обычно собирают и законно ли это в Украине.
Что такое парсинг простыми словами
Парсинг - это извлечение нужных сведений из веб-страниц и перевод их в удобный вид, например в строки таблицы. Делает это парсер, программа или скрипт, который открывает страницу, находит заданные поля и сохраняет их значения. Человек при этом только описывает, какие поля нужны и откуда их брать.
Что значит парсить сайт, проще показать на одном товаре. В карточке интернет-магазина есть название чайника, его цена и отметка о наличии. Парсер заходит в карточку, берет эти три значения и записывает их в одну строку таблицы, а потом повторяет то же самое для каждого товара каталога. Получается таблица, где у каждого товара своя строка, а у каждого поля своя колонка. Ее уже можно сортировать и сравнивать.
Рядом часто встречается слово веб-скрейпинг (от английского scraping, «соскабливание»), и в разговоре оба термина употребляют как синонимы. Скрейпингом называют всю работу целиком, от получения страниц до данных с них. Строго говоря, парсинг (от английского parse, «разбирать») означает только вторую половину работы, когда уже скачанный текст делят на части и решают, где здесь название, а где цена.
Как работает парсинг сайта
Программа делает то же, что человек с браузером: открывает страницу, находит цену и переписывает ее в таблицу. Разница только в масштабе. Она проходит тысячи страниц подряд по заранее заданным правилам и не пропускает строки по невнимательности. Каждую страницу она получает так же, как браузер посетителя, через запрос к серверу, только запросов намного больше.
Этапы: от запроса до таблицы
- Парсер информации с сайта начинает с перечня страниц, которые нужно обойти: ссылки на карточки товаров, разделы каталога или файл
sitemap.xmlсо всеми адресами ресурса. Список составляют вручную или собирают автоматически, переходя по ссылкам из разделов. - Скрипт отправляет серверу HTTP-запрос, как это делает браузер, и получает в ответ HTML-код страницы, то есть тот текст с разметкой, который браузер превращает в картинку на экране.
- Поиск нужных элементов. В коде много лишнего, поэтому программе задают правила, где лежат данные. Чаще всего это селекторы, короткие адреса элемента в коде, например «блок с классом price внутри карточки товара». Вместо них иногда используют XPath, язык запросов с той же задачей.
- Очистка и обработка. Из строки с ценой убирают пробелы, знак валюты и лишние символы, чтобы осталось число, а одинаковые позиции из разных разделов сводят в одну строку. Здесь же проверяют, что ни одна колонка не осталась пустой.
- Сохранение. Готовый результат записывается в таблицу Excel или Google Таблицу, в базу данных либо в файл JSON, откуда его заберет другая программа.
HTML, API и динамические сайты
Способ сбора зависит от того, как страница получает свои данные.
| Способ | Как работает | Когда подходит |
|---|---|---|
| Разбор HTML | Программа скачивает код страницы и вынимает из него значения по селекторам | Обычные страницы, где цена и описание сразу есть в коде. Самый частый и быстрый вариант для каталогов и блогов |
| Официальный API | Ресурс сам отдает данные в готовом виде, чаще в формате JSON, по запросу с ключом доступа | Если API есть, это надежнее, потому что формат не зависит от дизайна страниц. Учтите лимит запросов, а при большом объеме и платный доступ |
| Динамические страницы | Данные подгружает JavaScript уже после открытия, поэтому запускают браузер без окна, ждут загрузки и читают готовую страницу | Каталоги с подгрузкой товаров при прокрутке и фильтрах. Работает медленнее разбора HTML и требует больше ресурсов сервера |
Смена верстки ломает правила парсера: магазин переделал карточку, селекторы больше не находят цену, и в таблице появляются пустые ячейки. Поэтому в регулярном сборе настраивают уведомление о пустых значениях и после него обновляют селекторы.
Инструменты для парсинга
Инструмент выбирают по тому, кто будет им пользоваться и сколько страниц нужно обойти.
- Облачные сервисы Octoparse и ParseHub. Нужные поля выделяют мышкой на странице, сервис сам обходит похожие страницы и собирает таблицу. Подходят маркетологу без навыков программирования, например для выгрузки цен из одного каталога, но гибкость настройки и объем данных у них ограничены.
- Расширения браузера, например Data Scraper, выгружают таблицу или список с открытой страницы в CSV или Excel прямо из браузера. Удобны, когда данных немного, буквально несколько страниц. Платная версия добавляет функции, но для большого объема расширение все равно неудобно.
- Программы для SEO-анализа Screaming Frog SEO Spider и Netpeak Spider. Их делают для технического аудита, поэтому они обходят все страницы ресурса и собирают заголовки, мета-теги, ответы сервера и ссылки. Подходят SEO-специалисту и владельцу, который проверяет свой магазин.
- Библиотеки Python. BeautifulSoup разбирает HTML и находит элементы по тегам и классам, Scrapy обходит тысячи страниц с паузами между запросами, а Playwright управляет настоящим браузером и нужен для динамических страниц. Это путь для разработчика, код пишут под конкретную задачу, и кроме самого языка нужно понимать HTML и сетевые запросы.
Готовый сервис или парсер под задачу
Готового сервиса хватает, когда сбор разовый или источников один-два: выгрузить ассортимент поставщика, сравнить цены перед запуском акции. Такой сбор маркетолог настраивает сам. Хранение и запуск берет на себя сервис, а вы платите за тариф и сами следите, чтобы настройки не сломались после смены дизайна источника.
Свой парсер сайта заказывают у разработчика, когда данные нужны каждый день и с десятков магазинов, а сервис упирается в лимиты. Вторая причина в защите от ботов. Ресурс блокирует частые запросы, и сбор нужно аккуратно распределять во времени. Третья появляется, когда результат должен сразу попадать в каталог или CRM. Тогда скрипт на Python становится частью вашей системы и запускается по расписанию, а разработчик учитывает особенности каждого источника и отвечает за то, чтобы сбор работал стабильно.
Что парсят, законно ли это и как защититься
Бизнесу парсинг данных с сайта нужен там, где одни и те же сведения приходится регулярно собирать руками. Чаще всего это такие задачи:
- Цены и наличие. Парсинг сайтов конкурентов каждое утро показывает, у кого товар подешевел или закончился, а в сводной таблице рядом стоят ваша цена и цены других магазинов. Магазин косметики, например, после такой сводки быстро запускает похожую акцию.
- Ассортимент и характеристики для каталога. Размеры, состав и фото собирают у поставщика или производителя и загружают в карточки, поэтому импорт закладывают заранее, пока идет разработка интернет-магазина. Описания при этом пишут свои, потому что чужие тексты защищены авторским правом, об этом ниже.
- Оценки покупателей с маркетплейсов и отзовиков показывают, за что модель хвалят и ругают, и подсказывают, что поправить в описании или в самом товаре.
- SEO-данные. Заголовки, мета-теги и структуру разделов страниц из топа поиска собирают для работы, которую называют SEO-анализ конкурентов. Так видно, какие разделы есть у лидеров ниши и какие типы материалов они публикуют.
- Ключевые слова. Запросы из нескольких источников сводят в одну таблицу, чистят от дублей и группируют по смыслу, с этого начинается подбор ключевых слов для страниц.
- Парсер просматривает новостные ленты, форумы и соцсети и приносит новые упоминания бренда и новости о компании, чтобы вы вовремя ответили на негатив.
Во всех случаях выигрыш один и тот же. Сведения обновляются по расписанию, ошибок при переписывании меньше, а сотрудник занимается выводами из таблицы.
Законно ли парсить сайты в Украине
Собирать открытую информацию само по себе не запрещено: статья 34 Конституции Украины дает каждому право свободно собирать, хранить, использовать и распространять информацию. Ограничения зависят от того, что именно вы собираете и как используете:
- Персональные данные. Имена, телефоны и почты конкретных людей защищает Закон Украины «О защите персональных данных», для их обработки нужно основание, например согласие человека.
- Тексты и фото охраняет Закон Украины «Об авторском праве и смежных правах» № 2811-IX, действующий с 1 января 2023 года (закон 1993 года утратил силу). Брать их можно только с разрешения правообладателя, кроме случаев свободного использования, например цитаты со ссылкой на источник.
- Базы данных. Тот же закон дает особое право на базу, например каталог товаров, если владелец вложил значительные усилия в ее сбор и проверку. Без разрешения нельзя извлекать существенную часть такой базы и систематически снимать небольшие части, например цены каждый день, если это мешает нормальному использованию базы и вредит интересам владельца.
- Правила ресурса часто прямо запрещают автоматический сбор, и за нарушение владелец может закрыть доступ.
Файл robots.txt - это просьба владельца к роботам, а не норма закона, но добросовестный сбор ее соблюдает.
Как защитить свой сайт от парсинга
Полностью запретить автоматический парсинг сайта нельзя, зато несколько мер вместе делают его дорогим и медленным:
- Лимит запросов. Сервер ограничивает число запросов с одного IP-адреса за отрезок времени и временно блокирует адреса, которые его превысили.
- Капча на формах и при подозрительных визитах отсеивает ботов, но мешает и живым покупателям.
- Цены и остатки дилерам отдают через API по ключу, а не выкладывают весь прайс на страницах. Так вы сами решаете, кто и сколько данных получает.
- Условия пользования. Запрет автоматического сбора в правилах дает основание для претензии по договору, а особое право на базу данных действует и без него.
После настройки проверьте, что защита не закрыла страницы от поискового робота Google, иначе пострадают позиции в поиске.
Частые вопросы о парсинге
Могут ли заблокировать за парсинг?
Да. Ресурс блокирует IP-адрес, с которого приходит слишком много запросов, потому что они нагружают его сервер. Пауза между запросами и официальный API, если он есть, заметно снижают такой риск. Блокировкой адреса может закончиться и нарушение условий пользования ресурса.
В каком виде получают данные после парсинга?
Обычно в виде таблицы Excel или Google Таблицы, файла CSV или JSON. Если данные нужны каждый день, программа записывает их прямо в базу вашего магазина или в CRM, без промежуточных файлов. Формат лучше выбрать до начала сбора, под программу, которая будет с ним работать.
Можно ли парсить сайты без программирования?
Да, если задача простая и источников немного. Для нее хватает облачных сервисов вроде Octoparse и расширений браузера, где поля выбирают мышкой. Ежедневный сбор из многих источников надежнее поручить разработчику, который напишет свою программу под эту задачу.
