TopGit
Đánh giá repo GitHub

Colly: Framework Scraping và Crawling cho Go

gocolly/colly
CTopGit review image for gocolly/colly
Review by Topgit.dev for gocolly/colly, with GitHub repository stats and README context.
Nhận định nhanh

Colly đáng dùng ngay khi bạn viết scraper bằng Go và không muốn tự tay xử lý cookie, giới hạn tốc độ và kiểm tra robots.txt trên nền net/http. API callback (OnHTML, OnRequest) không gây vướng víu khi scraping HTML thông thường, nhưng Colly không có headless browser, nên các trang nặng JavaScript sẽ buộc bạn phải tìm thêm công cụ khác.

Sao
★ 25.5k
Fork
⑂ 1.9k
Ngôn ngữ
Go
Giấy phép
Apache-2.0
Chủ đề
Cập nhật
Sep 2026
Trang chủ
GitHub

Colly là gì?

Colly là framework scraping và crawling cho Go, bọc net/http và bộ phân tích HTML sau một API callback. Bạn tạo một Collector, đăng ký các handler như OnHTML cho phần tử và OnRequest cho mỗi request gửi đi, rồi gọi Visit trên một URL khởi đầu để Colly tự đi theo các link. Việc xử lý cookie, session và encode dữ liệu non-Unicode được Colly tự động lo.

Các tính năng cốt lõi của Colly

  • API dạng callback: đăng ký OnHTML, OnRequest và các handler tương tự thay vì viết vòng lặp parse thủ công.
  • Có sẵn độ trễ request và giới hạn concurrency theo từng domain.
  • Tự động xử lý cookie và session xuyên suốt các request.
  • Ba chế độ scraping sync, async và parallel trên cùng một Collector.
  • Cache response để lần crawl sau không tải lại trang đã lấy.
  • Tự động encode các response không phải Unicode.
  • Hỗ trợ robots.txt.
  • Distributed scraping và cấu hình qua biến môi trường.
Số sao GitHub của repo này thay đổi thế nào theo thời gian. Nguồn: star-history.com.Xem lịch sử sao

Bạn có thể xây dựng gì với Colly

  • Trích xuất dữ liệu có cấu trúc cho data mining hoặc pipeline xử lý dữ liệu — use case chính mà README nêu đầu tiên.
  • Xây search index riêng, như cách jivesearch/jivesearch dùng Colly cho công cụ tìm kiếm không theo dõi người dùng (theo danh sách adopter trong README).
  • Bộ theo dõi theo domain cụ thể, như cơ sở dữ liệu game Steam của gamedb/gamedb hay scraper NFL draft prospect của Leagify/colly-draft-prospects.
  • Công cụ CLI scraping nhỏ, như lawzava/scrape dùng để lấy email từ một trang.
  • Clone hoặc archive website, như imthaghost/goclone sao chép một website về máy.

Cài đặt và sử dụng Colly

Một chương trình Colly tối giản trông như thế này, lấy nguyên từ README: ```go import ( "fmt" "github.com/gocolly/colly/v2" ) func main() { c := colly.NewCollector() // Find and visit all links c.OnHTML("a[href]", func(e *colly.HTMLElement) { e.Request.Visit(e.Attr("href")) }) c.OnRequest(func(r *colly.Request) { fmt.Println("Visiting", r.URL) }) c.Visit("http://go-colly.org/") } ``` `NewCollector()` khởi tạo crawler, `OnHTML` phản ứng với phần tử khớp (ở đây là mọi `a[href]`), `OnRequest` chạy trước mỗi request, còn `Visit` bắt đầu crawl từ một URL khởi điểm. README dẫn tới thư mục `_examples` trên GitHub nếu bạn cần thêm ví dụ chi tiết.

Điểm mạnh

  • Chỉ cần một lệnh `go get` — không phải cài server scraping riêng, browser binary hay runtime ngôn ngữ khác.
  • Cookie, session và encode non-Unicode được xử lý tự động thay vì phải làm tay.
  • Ba chế độ sync, async, parallel giúp scale một crawl mà không phải đổi framework.
  • Hỗ trợ robots.txt và giới hạn tốc độ theo domain có sẵn, không phải ghép thêm.
  • Giấy phép Apache-2.0 cho phép dùng trong dự án thương mại mà không kèm ràng buộc copyleft.

Hạn chế và đánh đổi

  • Không có headless browser — các trang render bằng JavaScript không được xử lý; danh sách tính năng chỉ nói tới parse HTML và cache, không nói tới chạy script.
  • Proxy rotation không phải tính năng được tài liệu hoá của Colly. Nội dung liên quan proxy duy nhất trong README là quảng cáo sponsor của một nhà cung cấp proxy bên thứ ba, không phải API của Colly.
  • Distributed scraping được liệt kê là tính năng nhưng README không nêu chi tiết cấu hình — bạn phải tự tìm hiểu cách thiết lập.
  • Mục Bugs vẫn trỏ người dùng tới '#colly trên freenode', một mạng IRC đã ngừng hoạt động nhiều năm — dấu hiệu README chưa được cập nhật ở một số chỗ.

Lựa chọn thay thế cho Colly

Câu hỏi thường gặp

Colly có sẵn sàng cho production ở quy mô lớn không?

Colly có sẵn độ trễ request và giới hạn concurrency theo domain — hai thứ một crawl quy mô lớn cần nhất. README nêu throughput hơn 1k request/giây trên một lõi, nhưng không đưa thêm benchmark quy mô nào khác, nên hãy test trực tiếp trên đích thật trước khi đưa vào production.

Colly có hỗ trợ xoay proxy và giới hạn tốc độ không?

Colly xử lý giới hạn tốc độ có sẵn qua độ trễ request và concurrency tối đa theo domain. Xoay proxy không nằm trong danh sách tính năng được tài liệu hoá — nội dung liên quan proxy duy nhất trong README là quảng cáo của một nhà cung cấp proxy bên thứ ba, không phải API của Colly, nên bạn phải tự nối proxy vào.

Colly có xử lý được trang render bằng JavaScript không?

Colly không tự render JavaScript được. Danh sách tính năng của Colly chỉ có parse HTML, cookie và cache, không có headless browser hay chạy script, nên trang nặng JavaScript cần ghép thêm một công cụ render riêng.

Colly có miễn phí để dùng trong dự án thương mại không?

Colly miễn phí để dùng trong dự án thương mại. Colly phát hành theo giấy phép Apache-2.0, cho phép dùng thương mại mà không kèm ràng buộc copyleft.

Colly xử lý việc tuân thủ robots.txt như thế nào?

Colly liệt kê hỗ trợ robots.txt như một tính năng có sẵn, nên một Collector có thể tuân theo quy tắc robots.txt của trang mà không cần thêm code. README không nêu chi tiết cấu hình ngoài việc gọi tên tính năng, nên cần xem source hoặc ví dụ để biết cụ thể.

Sự khác biệt giữa Colly và các thư viện scraping Go khác là gì?

Khác biệt chính của Colly là phạm vi: Colly bọc net/http và parse HTML sau một API callback duy nhất (OnHTML, OnRequest) cùng cookie, cache và robots.txt có sẵn, nên bạn không phải tự ráp các mảnh đó từ nhiều package riêng lẻ.

Vấn đề mà Colly giải quyết

Viết scraper trực tiếp trên net/http của Go nghĩa là phải tự xử lý cookie, giới hạn tốc độ theo domain, parse robots.txt và encode dữ liệu non-UTF-8 trước khi chạm tới phần trích xuất dữ liệu thật sự. Colly gói phần việc lặt vặt đó sau một API callback, để code crawler của developer Go bắt đầu từ OnHTML thay vì từ quản lý kết nối.

Cách cài đặt / dùng thử

Cài Colly bằng lệnh `go get github.com/gocolly/colly/v2`. Đây là bước cài đặt duy nhất mà README ghi lại — không có server hay binary riêng nào phải chạy thêm.

Nên dùng Colly khi nào — và khi nào nên bỏ qua

Developer Go đã có sẵn service viết bằng Go và cần thêm scraping mà không muốn kéo Python hay headless browser vào nên thử Colly — API callback của nó giống các pattern middleware HTTP bạn đã quen. Bỏ qua nếu mục tiêu là các single-page app nặng JavaScript: Colly không render được, nên cuối cùng bạn vẫn phải ghép thêm một công cụ browser, xoá sạch cái lợi đơn giản mà Colly mang lại.

Repo liên quan

Nguồn & ghi công

Dựa trên repository GitHub gocolly/colly (https://github.com/gocolly/colly), README và danh sách tính năng, adopter được ghi trong đó.

Dữ liệu GitHub · đồng bộ lần cuối 16 thg 8, 2026Đánh giá bởi Henry
Về TopGit

Chưa chắc colly có hợp với bạn?

Để ChatGPT, Claude hoặc Perplexity tìm hiểu giúp — bấm bên dưới và xem AI nói gì về colly.

GitHub