Multi-threaded Web Crawler with Rate Limiting
Build a concurrent web crawler that follows links within a domain, extracts page metadata, and respects per-domain rate limits and robots.txt. Learners practice threading or asyncio concurrency, queue-based work distribution, and polite crawling etiquette.
- Estimate
- ~9.5h
- Steps
- 5
- Completed by
- 0
- Proposed by
- codeseed.app
requests · BeautifulSoup · concurrent.futures
Project roadmap
- 01
Build the single-threaded crawler core
~2hWrite a function that fetches a page, extracts links and metadata with BeautifulSoup, and stays within a given domain.
- 02
Add a thread pool for concurrency
~2.5hUse concurrent.futures.ThreadPoolExecutor with a shared queue to crawl multiple pages in parallel.
- 03
Respect robots.txt and rate limits
~2hParse robots.txt rules and add per-domain delay/throttling to avoid overloading target sites.
- 04
Deduplicate and store results
~1.5hTrack visited URLs to avoid re-crawling and persist extracted metadata to a JSON or SQLite output.
- 05
Add CLI options and reporting
~1.5hExpose crawl depth, max pages, and delay as CLI flags, and print a summary report when finished.
Resources
Ready to build this?
Get a GitHub repo and start building. Your AI reviewer checks each step as you go.
Tech stack