Skip to content

Spider Frameworks

A collection of web-spider templates. Clone the repository, pick one folder under spiders/, and use that script as a starting point.

This is not an installable crawler library. Nobody is expected to pip install a crawler API or run a unified --backend CLI.

Requires Python 3.10+.

What you get

Each spiders/<name>/ folder is a complete skeleton: one spider.py and a requirements.txt for that template only. Helpers (URL normalisation, link filtering, coloured printing) are copied on purpose so you can take one folder and delete the rest of the repo.

All four templates share the same crawl contract: start at one URL, stay on that host, collect off-domain links, and print a short summary. They differ only in how they fetch pages and how they fan out work.

Templates

Folder Fetch Concurrency Use when
threadpool httpx ThreadPoolExecutor Static HTML, you want threads and a simple script
asyncio httpx asyncio + semaphore Static HTML, you prefer async / await
selenium one Chrome sequential queue Pages need a real browser; keep one driver
selenium-threaded new Chrome / URL ThreadPoolExecutor Pages need a browser and you accept a driver per URL

The HTTP templates do not run JavaScript. If the links you care about appear only after client-side rendering, use a Selenium template.

What this collection does not do

These skeletons are starting points, not a production crawler. They do not implement robots.txt, rate limits, politeness delays, stealth, or writing results to a file. CI does not crawl the network or start Chrome.

The root pyproject.toml exists so makefile-skills CI and version bumps have a project. It does not export crawl helpers or install console scripts.