What Is a Scraping Framework vs a Library? β Definition and Differences
Learn how frameworks and libraries differ in control flow, what each provides, and how to choose based on crawl scale rather than preference.
The distinction is who calls whom. You call a library; a framework calls your code. That inversion decides how much structure you get and how much freedom you give up.
1. The Inversion of Control
A library is a tool you invoke. You write the loop, the scheduling, the storage, and the error handling, and you call the library where you need it.
A framework owns the loop. You supply handlers, and it decides when to call them, how many run concurrently, what happens on failure, and where output goes.
2. What a Framework Provides
| Concern | Handled |
|---|---|
| Request scheduling | Queue, priority, deduplication |
| Concurrency | Pools and per-domain limits |
| Failure handling | Configurable policy |
| Output | Pipelines to storage or files |
| Middleware | Hooks around requests and responses |
| Resumability | A persistent queue that survives interruption |
Those are the things a growing script accumulates anyway, usually less carefully.
3. What a Library Gives Instead
Control. Nothing is implicit, the whole flow is visible in your code, and debugging follows an ordinary call stack rather than framework internals.
For a small job that is a genuine advantage: a fetch loop with a parser is twenty lines and completely legible.
4. Choose on Crawl Scale
| Situation | Choose |
|---|---|
| A handful of known URLs | Library |
| Hundreds of pages, one shape | Library, with a small pool |
| Thousands of pages, link discovery | Framework |
| Long crawls that must resume | Framework |
| Mixed static and rendered pages | Framework with a browser layer |
| A one-off investigation | Library |
The crossover is where you find yourself writing a queue, deduplication, and a retry policy. At that point the framework already exists.
5. The Hidden Cost of Each
Frameworks impose their structure. Working against it β an unusual flow, a non-standard source β can be harder than writing the whole thing directly, and debugging means understanding the framework's internals.
Libraries impose maintenance. The queue, politeness, resumability, and output plumbing become yours to write and to get right, and they will be reinvented on the next project.
6. Mixing Is Normal
A framework for the crawl with a library for the parts it does not cover β rendering, a peculiar authentication flow, a bespoke output format β is the common production shape.
Frameworks provide hook points for exactly this, and using them is preferable to fighting the structure.
7. Neither Solves the Hard Parts
Selector durability, validation, politeness decisions, and whether collection is permitted are yours in both cases. A framework schedules requests; it does not decide whether they should be made.
8. Summary
A library is called by your code; a framework calls your code and owns scheduling, concurrency, failure handling, and output.
Choose by crawl scale: libraries for small, well-defined jobs, frameworks once a queue and resumability matter. And expect to mix them, since the interesting parts of any real collection are the ones neither provides.