---
title: "Colly: веб-скрапинг на Go с нуля"
description: "Интерактивный курс Colly — фреймворка веб-скрапинга для Go: селекторы, пагинация, формы, прокси, лимиты, кэш, хранение данных. 25 уроков и итоговый проект."
url: "https://golangmaster.ru/courses/colly/"
published: "2026-09-19"
updated: "2026-09-21"
level: "практика"
lessons: 25
hours: 9
---

# Colly: веб-скрапинг на Go с нуля

*практика · ~9 часов · 25 уроков. Обновлено 21.09.2026. Источник: https://golangmaster.ru/courses/colly/*

Вечер пятницы, а у отдела данных всё та же жалоба: поставщик снова не выгрузил прайс, и копировать триста позиций руками никто не будет. Или так: нужно собрать сотню страниц каталога в таблицу, а в руках только Go и половина вечера. Colly — фреймворк для именно таких задач: вы объявляете, на какие элементы страниц реагировать, а обходчик сам ходит по ссылкам, выдёргивает данные и держит темп, который вы ему задали.

Курс собран вокруг боевых сценариев: первый скрапер за десять минут, каталог с пагинацией, вход по логину с cookies, вежливые задержки через LimitRule, ротация прокси, переживание сетевых ошибок, складирование результатов в JSON, CSV и базу. Отдельные уроки — про честные пределы библиотеки: сайты, рендерящиеся на JavaScript, она не видит; robots.txt и антиботы никуда не делись; и мы проговорим, где заканчивается colly и начинается chromedp.

Итоговый проект — монитор цен: обходчик собирает карточки товаров, пишет изменения в базу, логирует ход через zap и управляется из командной строки через Cobra. К этому моменту каждый блок пайплайна вы уже собирали руками — проект только склеит их вместе.

## Чему научитесь

- Писать скраперы на Colly от первого Visit до обхода целого сайта
- Вынимать данные через CSS-селекторы и складывать в структуры Go
- Настраивать темп: задержки, параллелизм, лимиты на домен
- Работать с капризными сайтами: заголовки, cookies, прокси
- Переживать ошибки сети: таймауты, повторы, деградация
- Сохранять результат в JSON, CSV и базу данных
- Знать пределы библиотеки: JS-рендеринг, антиботы, правовые границы

## Кому подойдёт

- Разработчикам, которым надо выдёргивать данные из чужих сайтов и отчётов
- Аналитикам и маркетологам с базовым Go: прайсы, каталоги, мониторинг
- Тем, кто хочет в портфолио живую утилиту, а не очередной CRUD

## Что нужно знать заранее

- Базовый Go: функции, структуры, срезы, ошибки (курс «Go с нуля»)
- Общее представление об HTML: теги, атрибуты, классы

## Программа курса

01. **Знакомство с Colly: зачем скрапить на Go** — Что такое веб-скрапинг, где у colly границы и чем она лучше curl с регулярками.
02. **Установка и первый скрапер на Colly** — colly.NewCollector, OnHTML и Visit: разбор первой программы построчно.
03. **HTML для скрапера: DOM, теги, атрибуты** — Минимум разметки, которого хватает: дерево документа, классы, id, data-атрибуты.
04. **CSS-селекторы в Colly: от тегов до комбинаций** — Теги, классы, вложенность, атрибуты и псевдоклассы внутри OnHTML.
05. **OnHTML: колбэки, порядок вызовов и цепочки** — Как colly обходит DOM, несколько OnHTML на один скрапер, вложенные выборки.
06. **Извлечение данных: Text, Attr, ChildText** — e.Text, e.Attr, ChildAttr, ChildText и ForEach: все способы достать значение.
07. **Структуры для спарсенного: модели и слайсы** — Складываем данные в структуры, аккумулируем между колбэками, избегаем гонок.
08. **Навигация по сайту: обход ссылок и глубина** — Visit из колбэка, MaxDepth, очередь URL и обход целого раздела.
09. **OnRequest и OnResponse: запросы под контролем** — URL, заголовки, статус-коды и тело ответа: что видно на каждом шаге.
10. **LimitRule: задержки и параллелизм** — Delay, RandomDelay, DomainGlob: вежливый скрапер, который не DDoS-ит сайт.
11. **Параллельный скрапинг: Async и WaitGroup** — Асинхронный обход, синхронизация результата и ловушки гонок.
12. **Пагинация: обходим все страницы каталога** — Ссылка «следующая», номера страниц, стоп-условия и вечные каталоги.
13. **Формы и вход: POST, cookies, сессии** — Отправка форм, логин на сайте, хранение cookies между запросами.
14. **User-Agent и заголовки: когда сайт капризничает** — OnRequest-заголовки, Referer, Accept-Language и честные пределы маскировки.
15. **Прокси в Colly: ротация и пул адресов** — SetProxy, ProxyFunc, пул и ротация между запросами.
16. **Ошибки и повторы: OnError и таймауты** — Обработка ошибок сети, повторные попытки и скрапер, который не падает.
17. **Кэш и офлайн-режим: не дёргаем сайт дважды** — CacheDir, сохранение HTML на диск и воспроизводимость сбора.
18. **URL-фильтры: AllowedDomains, URLFilters, Depth** — Куда можно ходить: правила навигации и защита от разбегания по интернету.
19. **Сохраняем результат: JSON и CSV** — Маршалинг структур в файл, csv.Writer и формат отчёта, который переживёт месяц.
20. **База данных: складируем спарсенное в SQLite** — database/sql, upsert, батчи: история цен вместо разовых дамп-файлов.
21. **Когда есть API: JSON вместо HTML** — OnResponse и encoding/json: как понять, что сайту можно не скрапить DOM.
22. **Защита от скрапинга: честные пределы Colly** — robots.txt, капчи, JS-рендеринг: что colly не умеет и что делают вместо неё.
23. **Тестирование скрапера: httptest и фикстуры** — Локальный тест-сервер, фикстуры HTML и регрессионные тесты селекторов.
24. **CLI-скрапер: связка Cobra и Colly** — Флаги, конфиг и zap-логи: превращаем скрипт в консольный инструмент.
25. **Итоговый проект: монитор цен с алертами** — Полный пайплайн: обход, парсинг, база, логи, отчёт — всё из одного бинарника.

## Вопросы и ответы по курсу

### Законно ли делать парсинг сайтов?

Законность зависит от сайта и данных: публичные страницы с уважением к robots.txt и нагрузке — обычная практика, а вот обход авторизации, личные данные и копирование защищённого контента — уже правовые риски. В курсе этим занимается отдельный урок, и правила вежливости соблюдаются с первого.

### Справится ли Colly с сайтами на JavaScript?

Нет: Colly работает с HTML-ответом сервера и не исполняет JavaScript. Для SPA и динамических витрин нужен браузерный движок — chromedp или Rod; в курсе есть урок о том, где проходит граница и как заранее понять, что сайт рендерится в браузере.

### Код уроков запускается в браузере?

Скрапер ходит по сети, поэтому основные примеры выполняются локально. В каждом уроке — построчный разбор кода, интерактивные задания и тесты, а в 1-2 текстовых местах честно сказано, что запускать нужно локальный Go.
