Skip to main content

Web scraper orchestration platform with a visual flow builder

Project description

🚀 ScrapeTL

The Open-Source Scraper Management & Orchestration Platform

Python 3.10+ FastAPI SQLite Vanilla JS


ScrapeTL is a lightweight, robust orchestration engine designed to manage, schedule, and execute custom web scrapers. It provides a beautiful web-based interface for overseeing your data extraction pipeline, featuring native timezone support, custom webhook integrations, and a secure no-code deployment workflow.

✨ Core Pillars

  • 🏗️ Visual Scraper Builder: Move beyond code with the integrated node-based flow editor. Connect Fetchers, Selectors, and Transformers on a zoomable 2D canvas to build enterprise-grade scrapers visually.
  • 🧩 Functional Expression Engine: Inject dynamic logic into your flows using {{ ... }} syntax. Call built-in functions like now(), uuid(), and random() or define custom Python UDFs for complex data cleaning.
  • 🔬 Granular Debug Inspector: Troubleshoot failing scrapers with ease. Use the Debug Sink node to "tap" into any part of your flow and view raw data, HTML previews, and JSON structures in a dedicated, sandboxed inspector.
  • 🕒 Precision Scheduling: Powered by APScheduler, manage complex execution cycles via standard Cron expressions. Includes native IANA timezone resolution (e.g., Asia/Baku, UTC) to ensure global accuracy.
  • 🔄 Fault-Tolerant Queue: Automatically tracks and recovers missed tasks. If the server restarts, ScrapeTL identifies overdue jobs and processes them immediately via a persistent catch-up queue.
  • 🔌 Flexible Integrations: Distribute data effortlessly. Configure Discord webhooks, JSON payloads, and custom notification templates directly through the UI.
  • 📦 Semantic Versioning: Built-in system snapshots allow you to edit scraper logic and perform on-the-fly version bumps (e.g., v2.0.0) with clear audit trails.
  • 💎 Premium Dashboard: A high-performance, glassmorphic dark-mode SPA providing real-time log monitoring, queue management, and interactive health diagnostics.

🛠️ Technology Stack

  • Core: Python 3.10+, FastAPI, SQLAlchemy, APScheduler
  • UI: HTML5, CSS3 (Vanilla), Vanilla ES6+ JavaScript (Zero build dependencies)
  • Database: SQLite (Production-ready out of the box)

🚀 Deployment

  1. Clone the repository:

    git clone https://github.com/sadigaxund/ScrapeTL.git
    cd ScrapeTL
    
  2. Environment Setup:

    python -m venv .venv
    source .venv/bin/activate  # Linux/macOS
    .venv\Scripts\activate     # Windows
    pip install -r requirements.txt
    
  3. Launch:

    python run.py
    

    Access the dashboard at http://localhost:8000.


🧩 Building Your First Scraper

ScrapeTL offers a hybrid approach to development, supporting both visual flows and traditional Python scripts.

Option A: The Scraper Builder (Visual)

Navigate to Builder in the dashboard to create a scraper using the node-based flow editor. This is the fastest way to get started and requires zero code for most common scraping tasks (HTML extraction, Regex, JSON parsing).

Option B: Python-Based (Code)

For complex scraping scenarios requiring custom libraries or intricate logic, inherit from BaseScraper and define your rules in a .py file.

from app.scrapers.base import BaseScraper

class WebMonitor(BaseScraper):
    def scrape(self):
        # Your extraction logic (BeautifulSoup, requests, etc.)
        return [{"title": "Data Point A", "value": "123.45"}]

Once written, upload this file through the Setup Wizard on the dashboard. ScrapeTL will securely import, version, and orchestrate the tasks according to your schedule.

📜 License

This project is open-source software licensed under the MIT License.

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

scrapetl-3.0.0a1.tar.gz (202.9 kB view details)

Uploaded Source

Built Distribution

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

scrapetl-3.0.0a1-py3-none-any.whl (190.4 kB view details)

Uploaded Python 3

File details

Details for the file scrapetl-3.0.0a1.tar.gz.

File metadata

  • Download URL: scrapetl-3.0.0a1.tar.gz
  • Upload date:
  • Size: 202.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.15

File hashes

Hashes for scrapetl-3.0.0a1.tar.gz
Algorithm Hash digest
SHA256 02857ae097a25663af3122a5bf21ebda555d2acb3119aa1daffc7c73a887be00
MD5 209055c923c61b17133a8f766cbb9ad0
BLAKE2b-256 acb60495114cc40f890aba3863a7254e2d7b092c6dbca9b8185d1e9ffcf83578

See more details on using hashes here.

File details

Details for the file scrapetl-3.0.0a1-py3-none-any.whl.

File metadata

  • Download URL: scrapetl-3.0.0a1-py3-none-any.whl
  • Upload date:
  • Size: 190.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.15

File hashes

Hashes for scrapetl-3.0.0a1-py3-none-any.whl
Algorithm Hash digest
SHA256 d6e8a337e095f42c8a4e0959ae4083c803cc3ac61a5d0cd7ecc6f0145b48ea81
MD5 9fa958bdb022861e22aa4cc328e98727
BLAKE2b-256 66477664b7a609e679101f8a8b7aaeafb2db9aff65df028f22fb63113a3864c2

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