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)

🤖 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 →


📚 Documentation

🎯 By Role

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

📖 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.6.9.tar.gz (12.2 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.6.9-py3-none-any.whl (1.4 MB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for crawlo-1.6.9.tar.gz
Algorithm Hash digest
SHA256 f11d20449d923103b88a88cc2f264a13ad4265d7601149d12e6be1880a330dad
MD5 07f7b019a46ca285f2920ce43b178abc
BLAKE2b-256 bdf77208780ef74aa7b7c18e0161bda837f4e8c486ed6e314b469b97548a622c

See more details on using hashes here.

File details

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

File metadata

  • Download URL: crawlo-1.6.9-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.6.9-py3-none-any.whl
Algorithm Hash digest
SHA256 56f5c18deb94eeb8560b07a340a100c92bf0c0e5f78eb16aa9351df9091b7b92
MD5 95f6d02f08ea9060e07b6dbc03d4c633
BLAKE2b-256 cac0881ff5568ec5ce1433011b4a8beeb1658c8d423eebcb3e22656c4db9afcf

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