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

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

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

colly или chromedp: чем парсить сайты на Go

colly — быстрый фреймворк скрейпинга на чистом Go: HTTP-запросы, CSS-селекторы, лимиты и прокси на тысячи страниц. chromedp — управление настоящим Chrome через DevTools Protocol: рендеринг JavaScript, SPA-страницы и скриншоты. Скорость против исполняемого браузера.

collyкурсchromedp

Подбор под ваши приоритеты

Двигайте ползунки — насколько для вас важен каждый критерий (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: селекторы, лимиты, прокси и очереди

package main

import (
  "fmt"
  "time"

  "github.com/gocolly/colly/v2"
)

func main() {
  c := colly.NewCollector(
    colly.AllowedDomains("example.com"),
  )

  c.OnHTML("article h2", func(e *colly.HTMLElement) {
    fmt.Println(e.Text)
  })

  c.OnHTML("a.next", func(e *colly.HTMLElement) {
    e.Request.Visit(e.Attr("href"))
  })

  c.Limit(&colly.LimitRule{DomainGlob: "*", Delay: 1 * time.Second})
  c.Visit("https://example.com/articles/")
}

Сильные и слабые стороны

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 по критериям
Критерийcollychromedp
Скорость на массу страницСотни страниц в минуту без узких мест
Рендеринг 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.

Другие сравнения