Spaces:
Sleeping
Sleeping
|
Download Backend/README.md from orakzai-io/Async_Web_scraper: direct link, hf CLI and curl.
- Browser
- Download file 2.32 kB
-
https://huggingface.co/spaces/orakzai-io/Async_Web_scraper/resolve/main/Backend/README.md
- Command line
-
hf download hf://spaces/orakzai-io/Async_Web_scraper/Backend/README.md
-
curl -L -o README.md https://huggingface.co/spaces/orakzai-io/Async_Web_scraper/resolve/main/Backend/README.md
2.32 kB
Backend - Async Web Scraper API
A high-performance FastAPI service coordinating an asynchronous database-driven web scraping and AI extraction pipeline.
Project Structure & Core Classes
The backend is organized into a modular pipeline, with each file and class having a dedicated responsibility.
Root Files
main.py: The application entry point.- Handles FastAPI initialization and lifespan management.
- Configures Loguru for structured logging and sets up CORS middleware.
- Runs the Uvicorn server.
api.py: The interface layer.- Defines the APIRouter and endpoints (
/scrape,/results,/download). - Manages in-memory job state and initiates BackgroundTasks for asynchronous execution.
- Coordinates the
run()loop for processing a batch of URLs.
- Defines the APIRouter and endpoints (
App Module (app/)
scraper_manager.py(ScraperManager): The orchestrator.- Coordinates the full 6-stage scraping pipeline (Fetch -> Parse -> DB Store -> LLM -> JSONL -> DB Store).
- Interfaces between all the specialized modules.
browser_client.py(BrowserClient): The fetching layer.- Uses
curl_cffito fetch HTML while impersonating modern browser fingerprints (TLS/HTTP2) to bypass bot protection.
- Uses
parser.py(Parser): The content engine.- Leverages
trafilaturato extract clean, structured text from raw HTML. - Includes token-counting logic using
tiktoken.
- Leverages
llm_extractor.py(LLMExtractor): The AI intelligence.- Interfaces with Groq to transform raw text into structured JSON based on user-defined prompts.
- Implements
tenacityretry logic for robust AI interactions.
datastore.py(DataStore): The database manager.- Handles all SQLAlchemy operations, including saving parsed content and structured extractions to PostgreSQL.
models.py&database.py: The data foundation.- Defines the relational schema (
ParsedData,LlmExtraction) and sets up the database engine/session management.
- Defines the relational schema (
JSONStorage.py(JSONStorage): File persistence.- Asynchronously appends structured results to a local
.jsonlfile usingaiofiles.
- Asynchronously appends structured results to a local