Concurrent Web Crawler with Worker Pools
A command-line web crawler in Go that starts from a seed URL, follows links up to a configurable depth, and extracts page titles using a bounded worker pool for parallel fetching. Learners practice goroutines, channels, sync.WaitGroup, and rate-limited concurrency.
- Estimate
- ~11h
- Steps
- 6
- Completed by
- 0
- Proposed by
- codeseed.app
goroutines · channels · goquery
Project roadmap
- 01
Design the worker pool
~2hDesign a job queue and a bounded worker pool architecture using channels and sync.WaitGroup.
- 02
Implement the fetch worker
~2hWrite the worker function that fetches a page, parses links, and extracts the page title.
- 03
Track depth and visited URLs
~1.5hAdd depth tracking and a visited-URL set to prevent infinite crawling cycles.
- 04
Add per-domain rate limiting
~2hThrottle requests per domain so the crawler doesn't overwhelm any single site.
- 05
Generate a report
~1.5hAggregate crawl results and write a summary report to a CSV file.
- 06
Add graceful shutdown
~2hSupport context cancellation and timeouts so the crawler shuts down cleanly.
Resources
- DocsGo Documentation
Ready to build this?
Get a GitHub repo and start building. Your AI reviewer checks each step as you go.
Tech stack