Skip to main content

Open source collaborative bank transaction scraper for Chilean banks.

Project description

Fintself Logo

Scraper de movimientos bancarios open source y colaborativo.

PyPI Build Status License Code style: black PyPI - Downloads

Fintself te permite automatizar la extracción de tus movimientos financieros desde diversas entidades bancarias, entregándote los datos en formatos estructurados como XLSX, CSV o JSON. Funciona tanto como una herramienta de línea de comandos (CLI) como una librería de Python para que la integres en tus propios proyectos.

Características principales

  • Múltiples bancos: Soporte para varios bancos, con una arquitectura diseñada para añadir nuevos fácilmente.
  • Formatos flexibles: Exporta tus datos a xlsx, csv o json.
  • Doble interfaz: Úsalo desde tu terminal con su potente CLI o impórtalo como librería en tus scripts de Python.
  • Seguridad primero: Las credenciales se solicitan de forma segura y no se almacenan. Se recomienda el uso de variables de entorno.
  • Modo de depuración: ¿Algo falla? Activa el modo debug para visualizar el proceso del scraper en tiempo real y guardar capturas de pantalla para un análisis fácil.
  • Open source: Revisa, audita y mejora el código. ¡Las contribuciones son bienvenidas!

Bancos soportados

Actualmente, Fintself soporta los siguientes bancos:

  • 🇨🇱 Chile:
    • Banco Santander (cl_santander)
    • Banco de Chile (cl_banco_chile)
    • Tarjeta Cencosud Scotiabank (cl_cencosud)

Para ver la lista actualizada directamente desde la herramienta, ejecuta fintself list.

Instalación

Para instalar Fintself, solo necesitas tener Python 3.9+ y ejecutar el siguiente comando:

pip install fintself

Uso

Línea de comandos (CLI)

  1. Listar bancos disponibles:

    fintself list
    
  2. Ejecutar un scraper:

    fintself scrape <bank_id> --output-file movimientos.xlsx
    
    • <bank_id>: El identificador del banco (ej: cl_santander).
    • --output-file: El archivo donde se guardarán los resultados. El formato (xlsx, csv, json) se infiere de la extensión.

    El programa buscará las credenciales (<BANK_ID>_USER y <BANK_ID>_PASSWORD) en las variables de entorno. Si no las encuentra, las pedirá de forma interactiva.

    Ejemplo:

    # Usando prompts interactivos
    fintself scrape cl_santander --output-file santander.xlsx
    
    # Usando variables de entorno
    export CL_SANTANDER_USER="tu-rut"
    export CL_SANTANDER_PASSWORD="tu-clave"
    fintself scrape cl_santander --output-file santander.csv
    

Uso como librería en Python

from fintself import get_scraper, MovementModel
from fintself.core.exceptions import FintselfException
import pandas as pd

# Las credenciales se pueden pasar directamente o se leerán desde
# las variables de entorno si no se proveen.
USER = "tu-usuario"
PASSWORD = "tu-clave"
BANK_ID = "cl_santander"

try:
    # Obtener el scraper usando la factory
    scraper = get_scraper(BANK_ID)

    # Ejecutar el scraper
    movements: list[MovementModel] = scraper.scrape(user=USER, password=PASSWORD)

    # Convertir a DataFrame de Pandas
    if movements:
        df = pd.DataFrame([m.model_dump() for m in movements])
        print(df.head())
    else:
        print("No se encontraron movimientos.")

except FintselfException as e:
    print(f"Ocurrió un error controlado: {e.message}")
except Exception as e:
    print(f"Ocurrió un error inesperado: {e}")

Depuración (Debugging)

Si un scraper falla o necesitas ver qué está pasando, puedes activar el modo de depuración. Esto ejecutará el navegador en modo visible (no headless) y guardará capturas de pantalla y el contenido HTML de los pasos clave del proceso.

Los archivos de depuración se guardan en el directorio debug_output/<bank_id>/.

Desde la CLI

Añade el flag --debug:

fintself scrape cl_santander --output-file out.xlsx --debug

Desde Python

Pasa el argumento debug_mode=True a la factory get_scraper:

scraper = get_scraper("cl_santander", debug_mode=True)
movements = scraper.scrape(user=USER, password=PASSWORD)

⚠️ Descargo de responsabilidad

Este software se proporciona "tal cual", sin garantía de ningún tipo. Al utilizar Fintself, estás interactuando con sitios bancarios y manejando credenciales sensibles.

  • Usa Fintself bajo tu propio riesgo. Los desarrolladores no se hacen responsables de ningún problema, pérdida de datos, bloqueo de cuentas o cualquier otro daño que pueda surgir de su uso.
  • La seguridad de tus credenciales es tu responsabilidad. Recomendamos encarecidamente utilizar variables de entorno en lugar de escribir tus credenciales en scripts.
  • Los scrapers pueden dejar de funcionar en cualquier momento si el banco actualiza el diseño de su sitio web.

🚀 Funcionalidades premium

¿Te gusta Fintself? Descubre funcionalidades avanzadas como:

  • Análisis automático de patrones de gasto
  • Categorización inteligente de transacciones
  • Reportes y dashboards personalizados
  • Alertas y notificaciones automáticas

Visita fintself.com/funcionalidades para más información.

¿Cómo contribuir?

¡Las contribuciones son el corazón de Fintself! Si quieres añadir un nuevo banco, corregir un bug o proponer una mejora, eres bienvenido. Por favor, lee nuestra Guía de Contribución para empezar.

Licencia

Este proyecto está bajo la Licencia MIT. Consulta el archivo LICENSE para más detalles.

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

fintself-1.0.2.tar.gz (29.6 kB view details)

Uploaded Source

Built Distribution

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

fintself-1.0.2-py3-none-any.whl (31.2 kB view details)

Uploaded Python 3

File details

Details for the file fintself-1.0.2.tar.gz.

File metadata

  • Download URL: fintself-1.0.2.tar.gz
  • Upload date:
  • Size: 29.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for fintself-1.0.2.tar.gz
Algorithm Hash digest
SHA256 162ec315693b838e7e324ca4b27671abe6ae26c1b1793ab0e7702dc09c8660a6
MD5 f28b2425441a4f4d28877c9744d98ecf
BLAKE2b-256 169907c514cb58c31eb958626ff9d2728da311ef45cf8d5ac7e8750b8258c838

See more details on using hashes here.

Provenance

The following attestation bundles were made for fintself-1.0.2.tar.gz:

Publisher: release.yml on fintself/fintself

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file fintself-1.0.2-py3-none-any.whl.

File metadata

  • Download URL: fintself-1.0.2-py3-none-any.whl
  • Upload date:
  • Size: 31.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for fintself-1.0.2-py3-none-any.whl
Algorithm Hash digest
SHA256 1650b4180beddb4f8359b10cc39101f07c909307c8b52a1a660f4e03eb9f7e79
MD5 aaaa670b6598095a26dabc1f58377e35
BLAKE2b-256 b961d09c711d5b35cab9faa90f70c09a2e8a2e5c47b9563f0b2773c5824ef194

See more details on using hashes here.

Provenance

The following attestation bundles were made for fintself-1.0.2-py3-none-any.whl:

Publisher: release.yml on fintself/fintself

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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