Интернет — это, по сути, гигантская база данных, просто очень неудобно разложенная. Цены лежат вперемешку с картинками и кнопками, статистика спрятана в таблицах, объявления раскиданы по сотням страниц. «Собрать данные с сайта» означает превратить эту визуальную кашу в аккуратную таблицу или файл, с которым можно работать: считать, сравнивать, строить графики.
Эта статья — карта местности. Она объясняет, какими бывают данные, какими способами их вытаскивают (от ручного копирования до программ-роботов), где проходят юридические и этические границы, и разбирает конкретные сценарии под разные типы данных. Без персональных данных — о том, почему, поговорим отдельно.
Часть 1. Сначала немного теории — но без занудства
Как вообще устроен сайт
Когда вы открываете страницу, браузер получает текстовый файл на языке HTML — это разметка, набор вложенных «коробочек» с подписями. Заголовок лежит в коробочке с пометкой «заголовок», цена — в коробочке «цена», и так далее. Вы видите красивую страницу, но под ней — структурированный текст.
Сбор данных (по-английски web scraping, «соскребание») — это и есть процесс, когда программа читает этот текст, находит нужные коробочки и достаёт из них содержимое. Главное озарение для новичка: то, что вы видите на экране, почти всегда доступно как текст, нужно лишь до него добраться.
Два мира: HTML и API
Есть два принципиально разных способа, которыми сайт может отдавать данные.
Через HTML-страницу. Данные «вплавлены» в ту же страницу, что показывается человеку. Чтобы их достать, нужно разбирать (парсить) HTML — искать те самые коробочки. Это работает почти всегда, но способ более хрупкий: если дизайнер поменяет вёрстку, ваш сборщик сломается.
Через API. Многие сайты имеют «служебный вход» — программный интерфейс (Application Programming Interface), специально предназначенный для машин. Вы делаете запрос вида «дай мне погоду в Москве», а в ответ получаете чистые данные в аккуратном формате (обычно JSON — текст из пар «ключ: значение»). Это самый надёжный и вежливый способ, когда он доступен. Погода, курсы валют, карты, финансы, статистика — у всего этого, как правило, есть API.
Правило большого пальца: сначала ищите API, и только если его нет — парсите HTML.
Структурированные и неструктурированные данные
- Структурированные — уже разложены по полочкам: таблицы, прайс-листы, каталоги. Их собирать легче всего.
- Неструктурированные — сплошной текст: статьи, отзывы, посты. Собрать сам текст несложно, но чтобы извлечь из него смысл (тональность отзыва, упомянутые компании), нужна дополнительная обработка, часто с помощью ИИ.
Часть 2. Юридическая и этическая рамка
Это не формальность, которую можно пролистать. Незнание границ — самый частый способ нажить проблемы.
Файл robots.txt. Почти у каждого сайта по адресу сайт.com/robots.txt лежит
текстовый файл, где владелец прописывает, какие разделы он просит роботов не
трогать. Это не закон, а скорее «правила приличия», но игнорировать их — дурной
тон, а иногда и повод для блокировки.
Условия использования (Terms of Service). Многие сайты прямо запрещают автоматический сбор в пользовательском соглашении. Нарушение — это уже вопрос договорных отношений, и крупные площадки (маркетплейсы, соцсети) за это судятся.
Нагрузка на сервер. Если ваш робот шлёт тысячи запросов в секунду, вы фактически устраиваете сайту мини-DDoS. Вежливый сбор — это паузы между запросами и работа в часы низкой нагрузки.
Авторское право. Сами факты (цена товара, температура воздуха) авторским правом не охраняются. А вот тексты статей, фотографии, обзоры — охраняются. Собрать для анализа — одно; перепубликовать у себя — другое.
Персональные данные — отдельная и самая опасная зона. Имена, телефоны, адреса, лица на фото, переписка — всё это регулируется законами о защите данных (GDPR в Европе и аналогичными в других странах). Сбор персональных данных без законного основания может обернуться крупными штрафами и уголовной ответственностью. Поэтому в этой статье мы сознательно говорим только об обезличенных, обычно публичных и фактических данных: ценах, погоде, статистике, ассортименте, новостных заголовках и подобном.
Здравый критерий: собираю ли я общедоступные факты для анализа, не перегружая сервер и не присваивая чужой контент? Если да — вы, скорее всего, в безопасной зоне. Если речь о персональных данных или о перепродаже чужого контента — остановитесь и проконсультируйтесь.
Часть 3. Инструменты — от самого простого к самому мощному
Способов собрать данные — целый спектр. Выбор зависит от того, сколько данных вам нужно, как часто, и готовы ли вы программировать.
Уровень 0. Ручное копирование
Звучит примитивно, но если вам нужно 20 строк один раз — просто выделите таблицу мышкой и вставьте в Excel. Не стройте космолёт, чтобы сходить за хлебом. Автоматизация окупается, когда данных много или их нужно собирать регулярно.
Уровень 1. Функции прямо в таблицах
Google Таблицы умеют тянуть данные с сайтов встроенными функциями, без всякого программирования:
=IMPORTHTML("адрес"; "table"; 1)— вытащит первую таблицу со страницы (отлично работает, например, с таблицами из Википедии).=IMPORTXML("адрес"; "запрос")— достанет конкретные элементы по адресу внутри страницы.=IMPORTDATA("адрес")— загрузит готовый файл с данными (CSV).
Это идеальный старт для непрограммиста: всё происходит в знакомой таблице, и данные могут обновляться автоматически.
Уровень 2. Расширения для браузера
Бесплатные плагины, которые превращают сбор в «покажи мышкой, что собрать»:
- Web Scraper (расширение для Chrome) — вы кликаете по элементам прямо на странице, объясняете роботу «вот это — название, вот это — цена», и он проходит по всем страницам сам.
- Instant Data Scraper — автоматически находит таблицы и списки на странице и предлагает скачать их одной кнопкой. Очень быстро для простых случаев.
Подходят, когда сайт несложный и собирать нужно нерегулярно.
Уровень 3. No-code платформы (без кода, но мощнее)
Полноценные сервисы с визуальным интерфейсом, рассчитанные на серьёзные объёмы:
- Octoparse, ParseHub — вы настраиваете сбор мышкой, а платформа сама справляется со сложными сайтами, листанием страниц, расписанием по таймеру.
- Apify — маркетплейс готовых «сборщиков» под популярные сайты: часто нужное уже написано до вас, остаётся запустить.
- Bright Data, Octoparse Cloud — облачные решения промышленного масштаба, включая обход блокировок (об этом ниже). Это уже платные истории для бизнеса.
Плюс: не нужно программировать. Минус: за удобство и масштаб платят деньгами, а гибкость всё же ниже, чем у собственного кода.
Уровень 4. Программирование (максимальная гибкость)
Когда нужен полный контроль, пишут код. Самый популярный язык для этого — Python, во многом именно благодаря удобным библиотекам для сбора данных. Главные инструменты:
- requests — «скачивальщик» страниц: просит у сайта HTML и получает его.
- BeautifulSoup — «разбиральщик»: находит в полученном HTML нужные коробочки.
Связка
requests+BeautifulSoup— классический набор новичка. - Scrapy — целый фреймворк для серьёзных проектов: сам ходит по ссылкам, обходит тысячи страниц, складывает результат в файлы. Для больших задач.
- Selenium и Playwright — управляют настоящим браузером как робот-человек: кликают кнопки, прокручивают, заполняют поля. Нужны для «капризных» сайтов (см. ниже про JavaScript).
- pandas — не для сбора, а для обработки: приводит собранное в таблицу, чистит, считает.
Не обязательно писать код самому: современные ИИ-ассистенты пишут такие скрипты по текстовому описанию задачи. Порог входа за последние годы резко снизился.
Уровень «вообще без сбора»: готовые данные
Прежде чем что-то парсить, проверьте — может, кто-то уже всё собрал:
- Открытые наборы данных — Kaggle, порталы открытых данных госорганов (data.gov, data.gov.ru), статистические службы.
- RSS-ленты — многие новостные сайты и блоги до сих пор отдают свежие материалы в виде готовой машиночитаемой ленты. Просто и легально.
- Официальные API — повторим ещё раз: если он есть, это лучший вариант.
Часть 4. Главные сложности и как их обходят
Сайты на JavaScript
Многие современные сайты сначала отдают почти пустую страницу, а потом «дорисовывают»
содержимое скриптами уже в браузере. Простой requests увидит пустоту. Решение —
инструменты, которые запускают настоящий браузер (Selenium, Playwright) и дожидаются,
пока всё прогрузится. Это медленнее, но видит всё, что видит человек.
Листание и постраничность
Данные редко лежат на одной странице — обычно это «1, 2, 3 … 500» внизу или бесконечная прокрутка. Сборщик нужно научить переходить по страницам или прокручивать вниз, пока не кончатся записи.
Защита от роботов
Сайты не любят, когда их интенсивно парсят, и ставят преграды: CAPTCHA («докажи, что ты человек»), блокировку по IP-адресу при частых запросах, требование входа. Обходят это паузами между запросами, ротацией адресов (прокси-серверами), маскировкой под обычный браузер. Здесь важно помнить: чем агрессивнее обход защиты, тем ближе вы к нарушению условий сайта. Это серая зона, и в ней легко перейти черту.
Чистка данных
Собранное почти никогда не бывает идеальным: лишние пробелы, валюта вперемешку с
цифрами («1 990 ₽» вместо 1990), дубликаты, пропуски. Обработка и чистка — обычно
не меньшая часть работы, чем сам сбор.
Часть 5. Сценарии под разные типы данных
Теперь — самое практичное. Разберём, как подступиться к конкретным видам данных.
Цены и товары (мониторинг цен, ассортимент)
Зачем: следить за ценами конкурентов, ловить скидки, анализировать рынок, сравнивать предложения.
Особенности: маркетплейсы — самые защищённые сайты в интернете и обычно прямо запрещают парсинг в правилах. Данные подгружаются скриптами, цены меняются, стоят серьёзные античит-системы.
Как подступиться: для разовой задачи — расширения браузера. Для регулярного мониторинга — no-code платформы (на Apify часто есть готовые сборщики под крупные магазины) или собственный код с браузерной автоматизацией. Многие крупные площадки имеют партнёрские/товарные API — это законный путь. Будьте особенно аккуратны с правилами площадок: за парсинг банят и судятся.
Новости и статьи (тексты, заголовки)
Зачем: мониторинг упоминаний бренда или темы, сбор материалов для анализа, отслеживание новостной повестки.
Как подступиться: в первую очередь — RSS-ленты, это законно и просто. Если
ленты нет, помогают готовые новостные API (NewsAPI, GDELT и аналоги). Для отдельных
сайтов — связка requests + BeautifulSoup. Помните про авторское право: собирать
для анализа можно, перепубликовывать чужие тексты — нет.
Таблицы и статистика (Википедия, госданные, справочники)
Зачем: население городов, спортивная статистика, исторические ряды, научные данные.
Как подступиться: это самый лёгкий жанр. Таблица из Википедии вытаскивается одной
функцией IMPORTHTML в Google Таблицах за минуту. В Python библиотека pandas
умеет читать все таблицы со страницы одной командой (read_html). А ещё проверьте
порталы открытых данных — там многое уже лежит готовым файлом.
Объявления (недвижимость, авто, вакансии)
Зачем: анализ рынка аренды, средние зарплаты по профессии, динамика цен на авто.
Особенности: таких объявлений тысячи, они на множестве страниц, площадки часто защищаются. Важно: объявления нередко содержат персональные данные (контакты продавца) — их собирать не нужно и часто незаконно. Берите только обезличенное: цену, площадь, район, характеристики.
Как подступиться: no-code платформы с листанием страниц или Scrapy для больших объёмов. У многих площадок есть API для партнёров.
Отзывы и рейтинги
Зачем: понять, что хвалят и ругают в товаре, сравнить репутацию, найти болевые точки.
Особенности: сам текст отзыва собрать несложно, но ценность — в анализе. Современный подход: собрать отзывы, а потом прогнать их через ИИ-модель, которая определит тональность (позитив/негатив) и выделит темы. Имена авторов не собираем — берём только текст, оценку и дату.
Финансы (котировки, курсы валют, крипта)
Зачем: анализ рынка, отслеживание портфеля, исторические данные для бэктестов.
Как подступиться: здесь почти всегда есть API, и часто бесплатные или условно-бесплатные: Yahoo Finance, Alpha Vantage, биржевые API, API центробанков для курсов валют. Парсить HTML тут почти никогда не нужно — данные финансовые, их специально отдают машинам в чистом виде.
Погода и научные/экологические данные
Зачем: прогнозы, исторические наблюдения, климатический анализ, привязка к другим данным.
Как подступиться: исключительно через API (OpenWeatherMap, Open-Meteo, сервисы метеослужб). Парсить погодные сайты бессмысленно — API удобнее и надёжнее. Многие из них бесплатны для умеренного использования.
Изображения и медиа
Зачем: датасеты для обучения ИИ, коллекции для анализа, архивирование.
Особенности: технически собрать картинки несложно (адреса изображений есть в HTML). Юридически — самая скользкая зона: фотографии охраняются авторским правом, а если на них люди — добавляются персональные данные. Безопасно работать со специальными датасетами с открытыми лицензиями (Unsplash, Wikimedia Commons, наборы с явным разрешением на использование).
Карты и геоданные
Зачем: точки на карте (кафе, заправки), маршруты, координаты, площади районов.
Как подступиться: через API картографических сервисов (OpenStreetMap полностью открыт и бесплатен; есть платные API крупных картографических платформ). Отдельно существует OpenStreetMap как огромная открытая база геоданных, которую можно скачивать целыми регионами.
Спортивные данные
Зачем: статистика матчей, результаты, составы, история выступлений.
Как подступиться: есть специализированные спортивные API (некоторые бесплатны
для базовых данных). Таблицы результатов также легко берутся из Википедии и
справочных сайтов через IMPORTHTML или pandas.
Социальные сети (публичные метрики, не персональные)
Зачем: анализ трендов, популярность хэштегов, упоминания темы.
Особенности: самая чувствительная категория после прямых персональных данных. Соцсети жёстко защищены технически и юридически, парсинг почти всегда запрещён правилами, а большинство данных там — персональные. Безопасный путь — только официальные API платформ, и только агрегированные, обезличенные показатели (сколько постов по теме, общая тональность), без сбора профилей конкретных людей.
Часть 6. Как выбрать подход: короткая шпаргалка
Пройдитесь по вопросам сверху вниз — остановитесь на первом «да»:
- Может, данные уже собраны? → Проверьте Kaggle, порталы открытых данных, RSS.
- Есть ли у сайта официальный API? → Используйте его. Это лучший вариант.
- Нужно собрать чуть-чуть, один раз? → Скопируйте вручную или расширением браузера.
- Это таблица? →
IMPORTHTMLв Google Таблицах илиpandasв Python. - Регулярный сбор, но кодить не хочется? → No-code платформа (Octoparse, ParseHub, Apify).
- Нужен полный контроль или нестандартная задача? → Python:
requests+BeautifulSoup, а для сложных сайтов — Playwright/Selenium, для масштаба — Scrapy.
И на каждом шаге держите в голове три ограничителя: robots.txt и правила сайта, нагрузка на сервер, и категорически — никаких персональных данных.
Итог
Сбор данных с сайтов — это спектр, а не одна технология. На одном краю — выделить таблицу мышкой и вставить в Excel; на другом — фреймворк, обходящий тысячи страниц по расписанию. Между ними — функции таблиц, расширения браузера, no-code платформы и программные библиотеки. Правильный инструмент определяется объёмом, регулярностью и вашей готовностью программировать (которая, благодаря ИИ-ассистентам, сегодня уже не такой барьер).
Главное, что стоит унести с собой: сначала ищите готовые данные и API, парсьте HTML только когда иначе никак, уважайте правила и серверы сайтов и держитесь подальше от персональных данных. Технически собрать можно почти что угодно — но хорошая работа с данными начинается не с вопроса «как достать», а с вопроса «имею ли я право и стоит ли».