Перейти к содержимому
ГоМастер

Поиск по урокам

Найдите урок, курс, термин или раздел

Colly ~9 часов 25 уроковпрактика

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

Вечер пятницы, а у отдела данных всё та же жалоба: поставщик снова не выгрузил прайс, и копировать триста позиций руками никто не будет. Или так: нужно собрать сотню страниц каталога в таблицу, а в руках только 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: теги, атрибуты, классы

Программа курса: 25 уроков

  1. 1Знакомство с Colly: зачем скрапить на GoЧто такое веб-скрапинг, где у colly границы и чем она лучше curl с регулярками.~16 мин · colly golang, веб-скрапинг go
  2. 2Установка и первый скрапер на Collycolly.NewCollector, OnHTML и Visit: разбор первой программы построчно.~18 мин · colly первый скрапер, colly newcollector
  3. 3HTML для скрапера: DOM, теги, атрибутыМинимум разметки, которого хватает: дерево документа, классы, id, data-атрибуты.~16 мин · html для парсинга, dom дерево страницы
  4. 4CSS-селекторы в Colly: от тегов до комбинацийТеги, классы, вложенность, атрибуты и псевдоклассы внутри OnHTML.~18 мин · css селекторы парсинг, colly селекторы
  5. 5OnHTML: колбэки, порядок вызовов и цепочкиКак colly обходит DOM, несколько OnHTML на один скрапер, вложенные выборки.~18 мин · colly onhtml, onhtml колбек
  6. 6Извлечение данных: Text, Attr, ChildTexte.Text, e.Attr, ChildAttr, ChildText и ForEach: все способы достать значение.~18 мин · colly text attr, извлечение данных парсер
  7. 7Структуры для спарсенного: модели и слайсыСкладываем данные в структуры, аккумулируем между колбэками, избегаем гонок.~16 мин · структуры данных go парсер, модель данных скрапер
  8. 8Навигация по сайту: обход ссылок и глубинаVisit из колбэка, MaxDepth, очередь URL и обход целого раздела.~18 мин · colly обход ссылок, скрапинг всего сайта
  9. 9OnRequest и OnResponse: запросы под контролемURL, заголовки, статус-коды и тело ответа: что видно на каждом шаге.~16 мин · colly onrequest, colly onresponse
  10. 10LimitRule: задержки и параллелизмDelay, RandomDelay, DomainGlob: вежливый скрапер, который не DDoS-ит сайт.~18 мин · colly limitrule, colly delay парсинг
  11. 11Параллельный скрапинг: Async и WaitGroupАсинхронный обход, синхронизация результата и ловушки гонок.~18 мин · colly async, параллельный парсинг go
  12. 12Пагинация: обходим все страницы каталогаСсылка «следующая», номера страниц, стоп-условия и вечные каталоги.~18 мин · colly пагинация, парсер каталога страниц
  13. 13Формы и вход: POST, cookies, сессииОтправка форм, логин на сайте, хранение cookies между запросами.~20 мин · colly форма отправка, colly логин cookies
  14. 14User-Agent и заголовки: когда сайт капризничаетOnRequest-заголовки, Referer, Accept-Language и честные пределы маскировки.~16 мин · colly user agent, заголовки http парсер
  15. 15Прокси в Colly: ротация и пул адресовSetProxy, ProxyFunc, пул и ротация между запросами.~18 мин · colly proxy, ротация прокси парсинг
  16. 16Ошибки и повторы: OnError и таймаутыОбработка ошибок сети, повторные попытки и скрапер, который не падает.~18 мин · colly onerror, colly повтор запроса
  17. 17Кэш и офлайн-режим: не дёргаем сайт дваждыCacheDir, сохранение HTML на диск и воспроизводимость сбора.~16 мин · colly cache, кэш парсера go
  18. 18URL-фильтры: AllowedDomains, URLFilters, DepthКуда можно ходить: правила навигации и защита от разбегания по интернету.~16 мин · colly alloweddomains, colly urlfilter
  19. 19Сохраняем результат: JSON и CSVМаршалинг структур в файл, csv.Writer и формат отчёта, который переживёт месяц.~18 мин · сохранение данных парсер, json csv go
  20. 20База данных: складируем спарсенное в SQLitedatabase/sql, upsert, батчи: история цен вместо разовых дамп-файлов.~18 мин · парсер в базу данных go, sqlite golang
  21. 21Когда есть API: JSON вместо HTMLOnResponse и encoding/json: как понять, что сайту можно не скрапить DOM.~16 мин · парсинг json api go, api вместо html
  22. 22Защита от скрапинга: честные пределы Collyrobots.txt, капчи, JS-рендеринг: что colly не умеет и что делают вместо неё.~18 мин · защита от парсинга, colly javascript сайт
  23. 23Тестирование скрапера: httptest и фикстурыЛокальный тест-сервер, фикстуры HTML и регрессионные тесты селекторов.~18 мин · тестирование парсера go, httptest пример
  24. 24CLI-скрапер: связка Cobra и CollyФлаги, конфиг и zap-логи: превращаем скрипт в консольный инструмент.~18 мин · cli скрапер go, cobra colly
  25. 25Итоговый проект: монитор цен с алертамиПолный пайплайн: обход, парсинг, база, логи, отчёт — всё из одного бинарника.~24 мин · colly итоговый проект, монитор цен go

Вопросы о курсе

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

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

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

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

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

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