planet 07 of 08 · backend · product
Scrappo
scheduled web scraper
Dual-mode web scraper with scheduled jobs, email reporting, and multi-format exports (CSV, PDF, Excel).
planet 07 · drag to turn · 01 moonsclick the planet to see what it is made of
moons · one per top-level folder
About
from the readme on githubOverview
This is a Streamlit-based web scraping application that allows users to extract text content from websites with both manual and scheduled scraping capabilities. The application provides a user-friendly interface for managing scraping sessions, viewing historical data, and downloading results in multiple formats (CSV, PDF, Excel). It features authentication-based access control and automated background scheduling for recurring scraping tasks.
User Preferences
Preferred communication style: Simple, everyday language.
Frontend Architecture
- Framework: Streamlit for web interface
- Design Pattern: Single-page application with session-based state management
- Authentication: Environment variable-based admin credentials with session state tracking
- User Interface: Multi-tab layout for different functionalities (scraping, history, scheduling)
Backend Architecture
- Core Logic: Python-based modular architecture with separate concerns
- Web Scraping Engine: Trafilatura library for robust content extraction from web pages
- Background Processing: APScheduler with SQLAlchemy job store for automated recurring tasks
- Data Processing: Pandas for data manipulation and export functionality
Data Storage Solutions
- Primary Database: SQLite for simplicity and portability
- Schema Design: Three main tables:
scraping_sessions: Track scraping operations and their statusscraped_data: Store extracted content with metadata (word count, character count, timestamps)scheduled_tasks: Manage recurring scraping jobs- File Exports: Support for CSV, PDF (ReportLab), and Excel (openpyxl) formats
Built with
github language bytes · live · same numbers as the planet’s layerscomposition
Python63.7%TypeScript35.2%CSS0.7%JavaScript0.3%Other0.1%
stack
PythonFastAPITrafilatura