Skip to main content

Crawlo: A high-performance asynchronous Python web crawling framework with distributed support.。

Project description

Crawlo Logo

Crawlo

A Modern High-Performance Python Async Web Scraping Framework

Python 3.8+ · Python 3.14 Compatible

中文 · English

Quick Start · Key Features · Docs · Examples


✨ Quick Start (3 Steps)

1. Install

pip install crawlo

2. Create a Spider

crawlo startproject myproject
cd myproject
crawlo genspider example example.com

3. Run

crawlo run example

👉 5-Minute Quickstart Tutorial →


🚀 Key Features

⚡ High-Performance Async Architecture

  • Built on asyncio + aiohttp/httpx/curl-cffi multi-protocol downloaders
  • Smart concurrency control, connection pool reuse, auto throughput optimization
  • HTTP/2 support, TLS fingerprint emulation (bypass JA3 detection)

🛡️ Robust Anti-Bot Capabilities

  • HybridDownloader: 6-level detection priority, auto-switch protocol/browser engine
  • Cloudflare Auto-Bypass: Detects challenge pages and auto-switches to stealth browser
  • 5 Browser Downloaders: Playwright / Camoufox / CloakBrowser / DrissionPage / Chrome
  • BROWSER_ Unified Config Layer*: One set of params for all browser downloaders
  • Adaptive Selectors: Auto-relocate elements when site structure changes (selector self-healing) — Guide →

🤖 AI Integration (MCP Server)

  • Claude / Cursor directly invoke Crawlo scraping capabilities
  • Three scraping modes: basic (1-3s) → stealth (3-10s) → max-stealth (10s+)
  • Browser singleton pool: stealth/max-stealth modes reuse instances
  • Structured error responses: distinguish TIMEOUT / CONNECTION_ERROR / STEALTH_UNAVAILABLE, with suggestions

📊 Four-Level Backpressure Defense

  • Engine layer: request generation control (enqueue + TaskManager dual checks)
  • QueueManager layer: strategy-driven (QueueSizeStrategy / AdaptiveStrategy / CompositeStrategy)
  • MemoryQueue layer: Mixin delegation + fallback logic
  • Hard limit: direct rejection when queue is full
  • Smart enhancement: IntelligentBackpressureCalculator + BackpressureMonitor optional integration

📬 Multi-Channel Notification

  • 5 Channels: DingTalk / Feishu / WeCom / Email / SMS
  • 30+ Preset Templates: task start/stop, anomaly alerts, progress updates, DB monitoring
  • Async Delivery: async_send_* functions, run_in_executor wrapper to avoid blocking event loop
  • Message dedup + rate limiting to prevent notification storms

🔄 Three Deployment Modes

Mode Config Coordination Use Case
Memory Mode RUN_MODE='standalone' QUEUE_TYPE='memory' None (auto exit) Dev/debug, quick validation
Multi-Node RUN_MODE='auto' QUEUE_TYPE='redis' Competing consumption (BZPOPMIN) Multi-machine, task loss acceptable
Distributed RUN_MODE='distributed' QUEUE_TYPE='redis_stream' ACK + heartbeat + failover Production, high reliability

All three modes share the same priority model — switch without modifying spider code. Learn More → · Production Deployment →


📚 Documentation

🎯 By Role

You are? Recommended Reading
Beginner 5-Min QuickstartInstallation
Developer Configuration GuideScheduling Guide
Ops Run Mode Deep DiveCheckpoint SystemProduction Deployment

📖 Full Docs Navigation

👉 Browse Complete Docs →


💡 Examples

Check out the examples/ directory:

  • Basic - Quick start
  • Advanced - Complex scenarios
  • Production - Ready for production

👉 View All Examples →


🤝 Contributing

Issues and Pull Requests are welcome!

  1. Fork the repository
  2. Create your feature branch (git checkout -b feature/AmazingFeature)
  3. Commit your changes (git commit -m 'Add some AmazingFeature')
  4. Push to the branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

📄 License

Licensed under BSD 3-Clause - see the LICENSE file for details.


⭐ If this project helps you, please give us a Star!

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

crawlo-1.7.0.tar.gz (72.9 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

crawlo-1.7.0-py3-none-any.whl (1.4 MB view details)

Uploaded Python 3

File details

Details for the file crawlo-1.7.0.tar.gz.

File metadata

  • Download URL: crawlo-1.7.0.tar.gz
  • Upload date:
  • Size: 72.9 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.13

File hashes

Hashes for crawlo-1.7.0.tar.gz
Algorithm Hash digest
SHA256 438640722ca99e94c3843a4cc276347ebb36ed09cc150822c48e9ce86a905b89
MD5 1cec4885a99c6d579551c72eca241a68
BLAKE2b-256 c257966fca39150a7ac99a11ea261d347ac2fc31b5856c5e8d9790b4edf083f3

See more details on using hashes here.

File details

Details for the file crawlo-1.7.0-py3-none-any.whl.

File metadata

  • Download URL: crawlo-1.7.0-py3-none-any.whl
  • Upload date:
  • Size: 1.4 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.13

File hashes

Hashes for crawlo-1.7.0-py3-none-any.whl
Algorithm Hash digest
SHA256 2f17d97338cf31e6a6d20e6cf69e93ad424fe8396221a71662c4b71ae7de01bb
MD5 357f3cc37af36402e7c1828b389c789d
BLAKE2b-256 8ec6b072f9b401b3fc94cae6ae298c71098fc4e7f5c2397874da68b24d11c7d2

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page