scrapydo
Crochet-based blocking API for Scrapy.
What it is and what it does
ScrapyDo wraps Scrapy's asynchronous reactor with Crochet to expose a blocking, function-based API for web scraping. Instead of managing Scrapy's event loop directly, you call simple functions like `fetch()` and `crawl()` that handle reactor initialization and teardown internally. This is useful when you want to use Scrapy from a synchronous context—such as a Jupyter notebook or a regular Python script—without having to understand or manage Twisted's reactor lifecycle.
The package provides three main operations: fetching a single URL to get a response object, crawling a URL with a callback function to extract and yield items, and running an existing spider class with custom arguments. It also includes a `highlight()` utility for syntax-highlighting code in IPython notebooks. However, the package has been abandoned since its latest release on 2017-02-24, so compatibility with current versions of Scrapy, Crochet, and Python is uncertain.
Use it for:
- Running Scrapy spiders from Jupyter notebooks without managing the Twisted reactor directly.
- Fetching and parsing a single URL synchronously in a regular Python script without async/await boilerplate.
- Crawling a site with a callback function to extract structured data in a blocking, sequential manner.
- Integrating Scrapy into a synchronous application or API endpoint that needs to scrape web content on demand.
Worth the install?
AI-flagged interpretation of the facts on this page — verify before relying
Provides a blocking API to run Scrapy spiders synchronously, wrapping Scrapy's asynchronous reactor with Crochet to allow straightforward function calls for fetching URLs and crawling sites.
No. The package is abandoned with last release on 2017-02-24 and high install friction. Dependency compatibility with modern Scrapy and Crochet versions is highly uncertain. If you need synchronous Scrapy integration, consider using Scrapy's modern async/await patterns directly or evaluating actively maintained alternatives.
Install
scrapydo on PyPI
pip
pip install scrapydouv
uv add scrapydopoetry
poetry add scrapydoInstalling scrapydo
Before you install
High install friction and abandoned maintenance status. Last commit was 2017-02-24 with no updates since. Depends on Scrapy and Crochet, which may have evolved significantly since the package was last maintained.
License in practice
MIT license is permissive and poses no restrictions on use or redistribution.
Quickstart
import scrapydo
scrapydo.setup()
response = scrapydo.fetch("http://example.com")
# Or crawl with a callback:
items = scrapydo.crawl("http://example.com", parse_callback)
Requires Scrapy and Crochet as dependencies; package is abandoned and may not work with current versions of those libraries.
Verify before relying
- Whether scrapydo works with modern versions of Scrapy and Crochet given the time since last release.
- Whether the high install friction is due to compiled dependencies or dependency resolution issues.
- Current compatibility with modern Python versions (requires_python is unspecified in metadata).
Package facts
| License | MIT (permissive) |
| Python support | not specified |
| Install friction | high — source build required |
| Runtime dependencies | none |
| Maintenance | abandoned — 3,458 days since the last release |
| Last repo commit | |
| First released | |
| Downloads | 87,727/month — #13,774 on PyPI (30-day window, as of 2026-08-14) |
| Known vulnerabilities | none known (OSV.dev, checked 2026-08-14) |
Evidence: scrapydo-0.2.2.tar.gz
Tags
More WWW/HTTP packages
urllib3 is an HTTP client library that provides…
permissive · top 100 on PyPI
requestsRequests is a Python HTTP library that…
permissive · top 100 on PyPI
h11h11 is a pure-Python HTTP/1.1 protocol…
permissive · top 100 on PyPI
httpxHTTPX is a fully featured HTTP client library…
permissive · top 100 on PyPI
httpcoreA minimal low-level HTTP client library that…
permissive · top 100 on PyPI
aiohttpaiohttp is an async HTTP client and server…
permissive · top 100 on PyPI
crochetCrochet lets you call Twisted asynchronous code…
permissive · top 15,000 on PyPI
scraplingScrapling is a web scraping and crawling…
permissive · top 5,000 on PyPI
ScrapyScrapy is a web scraping framework that…
permissive · top 5,000 on PyPI
scrapy-playwrightIntegrates Playwright browser automation into…
permissive · top 5,000 on PyPI
spider-clientPython SDK for the Spider Cloud API that…
permissive · top 15,000 on PyPI
pytest-twistedA pytest plugin that enables testing of…
permissive · top 15,000 on PyPI
scrapy-zyte-apiScrapy plugin that integrates Zyte API for web…
permissive · top 15,000 on PyPI
syncerSyncer converts async functions to synchronous…
permissive · top 15,000 on PyPI
scrapfly-sdkPython SDK for the Scrapfly web scraping…
permissive · top 15,000 on PyPI
threadloopRuns Tornado coroutines from synchronous Python…
permissive · top 15,000 on PyPI