Skip to content

RanuK12/scraper-utils

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Scraper Utils 🚀

Colección de herramientas de scraping y automatización para tareas de ML, Data Science y DevOps, escritas en Python con enfoque en calidad, tests y documentación.


✨ Propósito

  • Portfolio técnico: Demostrar habilidades en scraping, automatización, testing y clean code.
  • Reutilizable: Scripts listos para integrar en pipelines de datos o proyectos personales.
  • Open-source: Código limpio, con tests y ejemplos.

🛠 Stack

  • Lenguaje: Python 3.11+
  • Librerías:
    • requests / httpx (HTTP)
    • beautifulsoup4 / lxml (HTML parsing)
    • selenium (JS-heavy sites)
    • pandas (data processing)
    • pytest (testing)
    • loguru (logging)
  • CI/CD: GitHub Actions (tests, lint, security scan)
  • Automatización: Bash scripts para deployment rápido.

📁 Estructura

scraper-utils/
├── src/
│   ├── __init__.py
│   ├── base_scraper.py       # Clase base + manejo de errores
│   ├── dynamic_scraper.py    # Selenium + headless
│   ├── static_scraper.py     # requests + bs4
│   └── utils.py              # helpers (rate limiting, retries)
├── tests/
│   ├── test_base.py          # Tests de la clase base
│   ├── test_static.py        # Tests de scraping estático
│   └── test_dynamic.py       # Tests de scraping dinámico
├── examples/
│   ├── scrape_hackernews.py  # Ejemplo real: extraer headlines
│   └── scrape_github_top.py  # Ejemplo: top repos por lenguaje
├── .github/
│   └── workflows/
│       ├── tests.yml         # CI: pytest + lint
│       └── security.yml      # TruffleHog: scan de secrets
├── requirements.txt          # Dependencias
├── pyproject.toml            # Configuración (poetry)
└── README.md                 # Este archivo

🚀 Primeros pasos (en 30 segundos)

  1. Clonar:

    git clone https://github.com/RanuK12/scraper-utils.git
    cd scraper-utils
  2. Instalar:

    python -m venv .venv
    source .venv/bin/activate
    pip install -r requirements.txt
  3. Ejecutar un ejemplo:

    python examples/scrape_hackernews.py --limit 10

    → Imprime los últimos 10 headlines de Hacker News.

  4. Tests:

    pytest tests/ -v

🔧 Configuración avanzada

Rate limiting y retries

from src.utils import RateLimiter, RetryHandler

limiter = RateLimiter(max_requests=5, period=1)  # 5 req/seg
retry = RetryHandler(max_retries=3, delay=1)    # Retry en fallos

@limiter.limit
@retry.retry
def fetch_page(url):
    response = requests.get(url)
    return response.text

Logging

from loguru import logger

logger.add("scraper.log", rotation="10 MB")
logger.info("Iniciando scraping...")

📊 Métricas de calidad

Criterio Estado
Tests 100% coverage (pytest)
Linting PEP8 + flake8
Security TruffleHog en CI
Documentación Docstrings + README
Reproducibilidad requirements.txt + pyproject.toml

🤝 Contribuciones

Bienvenidos PRs con:

  • Nuevos scraper templates.
  • Mejoras en manejo de errores.
  • Optimizaciones de performance.
  • Documentación adicional.

📜 Licencia

MIT License — libre uso, modificación y distribución.


🔗 Links útiles

About

Herramientas de scraping y automatización para ML/Data tasks — repositorio demo de Emilio Ranucoli

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages