colly — быстрый фреймворк скрейпинга на чистом Go: HTTP-запросы, CSS-селекторы, лимиты и прокси на тысячи страниц. chromedp — управление настоящим Chrome через DevTools Protocol: рендеринг JavaScript, SPA-страницы и скриншоты. Скорость против исполняемого браузера.
Двигайте ползунки — насколько для вас важен каждый критерий (0 — не важен, 5 — критично). Счёт пересчитывается на лету: это взвешенное среднее оценок библиотек по критериям, а не бенчмарк.
●●●
Сотни страниц в минуту без узких мест
●●●
SPA и динамическая вёрстка
●●●
CSS-селекторы и ожидания
●●●
Память и процессор на сервере
●●●
Заголовки, прокси, поведенческие фингерпринты
Взвешенный счёт
collyваш матч72
chromedp68
Под ваши веса лидирует colly: каталогам, спискам, статьям и всем сайтам, отдающим данные в html.
Вопрос «colly или chromedp» встаёт, когда первый скрепер на Go упирается в пустую выдачу: сайт отдал HTML, а данных в нём нет — их дорисовывает JavaScript. colly работает на уровне HTTP-запросов: скачал документ, нашёл узлы CSS-селекторами, вызвал колбеки. chromedp управляет настоящим браузером Chrome: страница исполняет скрипты, динамическая вёрстка отрисовывается, а скрепер получает финальный DOM. На этой странице разберём оба подхода по одним критериям, покажем одну и ту же задачу в двух библиотеках и соберём персональную рекомендацию ползунками.
colly — это конвейер: OnRequest и OnResponse для перехвата, OnHTML для CSS-селекторов, LimitRule для темпа (параллелизм, пауза между запросами), очереди и cookies, прокси и заголовки User-Agent. Сотни страниц в минуту — его естественный режим, а бинарник не тащит ничего тяжёлого: чистый Go и разумный расход памяти. Расплата принципиальна: JavaScript colly не исполняет. Если данные появляются после fetch из скрипта, colly их не увидит — нужны API-эндпоинты, которые сайт дергает из браузера, или другой инструмент.
chromedp решает проблему иначе: он запускает Chrome и разговаривает с ним по DevTools Protocol без Selenium и Java. Navigate, WaitVisible, Evaluate и Action-комбинаторы позволяют дождаться селектора, вытащить тексты уже отрисованной страницы, сделать скриншот или заполнить форму. Цена — ресурсы и темп: каждый таб это память браузера, а тысячи страниц через Chrome требуют очереди и терпения. Зато по-настоящему динамические сайты — SPA, бесконечные ленты, капризные фреймворки — становятся доступными. Инструменты дополняют друг друга: классическая связка — colly обходит каталог, а chromedp достаёт страницы, где без браузера пусто.
Как читать итог ниже: оценки — усреднение практики, не лаборатория; ползунки подставляют ваши приоритеты. В нашем курсе colly разобран весь статический путь: от CSS-селекторов и OnHTML до лимитов, прокси, антибот-защиты и итогового проекта. Код одной и той же задачи в обеих библиотеках — ниже, после критериев.
Одна и та же задача в каждой библиотеке
Задача-эталон для этого сравнения: посмотрите на разницу в церемониях, типах и обработке ошибок — так выбор ощущается, а не только описывается словами.
Конвейер скрейпинга на чистом Go: селекторы, лимиты, прокси и очереди
Управление Chrome по DevTools Protocol: рендеринг JS, скриншоты и формы
package main
import (
"context""fmt""time""github.com/chromedp/chromedp"
)
func main() {
ctx, cancel := chromedp.NewContext(context.Background())
defer cancel()
ctx, cancel = context.WithTimeout(ctx, 30*time.Second)
defer cancel()
var titles []string
chromedp.Run(ctx,
chromedp.Navigate("https://example.com/articles/"),
chromedp.WaitVisible("article h2"),
chromedp.Evaluate(`Array.from(document.querySelectorAll("article h2")).map(e => e.textContent)`, &titles),
)
for _, t := range titles {
fmt.Println(t)
}
}
Сильные и слабые стороны
colly
Конвейер скрейпинга на чистом Go: селекторы, лимиты, прокси и очереди
Огромная скорость: HTTP-запросы без браузера, сотни страниц в минуту
LimitRule и Async: темп, параллелизм и паузы управляются явно
Прокси-пул, ротация User-Agent и cookies — всё из коробки
JavaScript не исполняет: SPA и дорисованные скриптами данные не видит
Динамические сайты требуют реверса их API-эндпоинтов
Берите, если: каталогам, спискам, статьям и всем сайтам, отдающим данные в html.
chromedp
Управление Chrome по DevTools Protocol: рендеринг JS, скриншоты и формы
Полноценный браузер: SPA, бесконечные ленты и фреймворки отрисовываются
WaitVisible и Action-комбинаторы: дождались селектора — забрали DOM
Скриншоты, PDF, формы и выполнение JS в контексте страницы
Тяжёлый: каждый таб это память браузера, темп ниже на порядки
Нужен установленный Chrome в окружении — CI и контейнеры требуют образа
Берите, если: динамическим сайтам, где данные появляются только после исполнения javascript.
Оценки по критериям
Шкала 1-5: экспертная оценка команды проекта по практике, а не синтетика.
Сравнение colly, chromedp по критериям
Критерий
colly
chromedp
Скорость на массу страницСотни страниц в минуту без узких мест
Рендеринг JavaScriptSPA и динамическая вёрстка
Удобство селекторовCSS-селекторы и ожидания
Расход ресурсовПамять и процессор на сервере
Работа с защитой сайтовЗаголовки, прокси, поведенческие фингерпринты
Вердикт: когда что выбирать
Это не конкуренция, а разные этажи одной задачи: colly забирает всё, что лежит в HTML, chromedp — всё, что дорисовывает браузер. Начинайте с colly: он быстрее, легче и закрывает большинство сайтов. chromedp подключайте точечно к страницам, где без исполнения JavaScript пусто — так скрепер остаётся быстрым, а данные полными.
Каталог, список статей, лента — данные в самом HTMLcollyHTTP-конвейер с селекторами и лимитами на максимальной скорости
SPA или данные появляются после исполнения скриптовchromedpWaitVisible дожидается отрисовки, DOM забирается уже готовым
Большой обход: тысячи страниц и скромный серверcollyПамять и процессор несравнимо ниже, чем у браузера
Гибрид: обход каталога плюс отдельные динамические страницыcolly + chromedpcolly ведёт обход, chromedp достаёт проблемные URL точечно
А что выбрали вы?
Кликните по своему выбору — голос сохранится только в вашем браузере (персональные данные никуда не отправляются).
Частые вопросы
Что быстрее — colly или chromedp?
colly на порядки быстрее: обычные HTTP-запросы без браузера при разумных паузах дают сотни страниц в минуту. chromedp тратит ресурсы на рендеринг каждого таба и живёт в темпе браузера. Если сайт отдаёт данные в HTML, скорость chromedp просто не нужна.
Может ли colly исполнять JavaScript?
Нет, colly работает на уровне HTTP-запросов и полученного HTML. Практические обходные пути: найти API-эндпоинт, из которого скрипты берут данные, и ходить в него напрямую; или подключать браузерный инструмент для проблемных страниц. Про реверс эндпоинтов честно сказано в уроке курса colly про антибот-защиту.
Чем chromedp отличается от Selenium?
Selenium — внешняя прослойка с сервером и клиентом через WebDriver, часто на Java или Python. chromedp говорит с Chrome напрямую по DevTools Protocol из Go-процесса: без отдельного сервера, без Java, без зависимостей между языками. API — цепочки Action-объектов, компилируемых в один бинарник.
Как быть с антибот-защитой?
Начинайте с вежливости: LimitRule с паузами, честный User-Agent, уважение к robots.txt — это закрывает часть сайтов вообще без хитростей. Дальше — прокси-пул и ротация заголовков в colly, поведенческий фингерпринт браузера в chromedp. Границы дозволенного и приёмы разобраны в отдельном уроке курса colly.