Skip to main content

Contributors Forks Stargazers Issues MIT License LinkedIn Build-sphinx-docs


Logo

SiSedeInversiones

Este paquete está dedicado a automatizar la recolección de datos que se encuentran en el portal “Sistema de Seguimiento de Inversiones – SSI” del Estado peruano, donde se pueden monitorear los proyectos de inversión pública en el Perú a través de los Códigos Únicos de Inversión (CUI).
Ir a la Documentación »

View Demo · Report Bug · Request Feature

Tabla de Contenidos
  1. Acerca del proyecto
  2. Empezando
  3. Uso
  4. Contribuyendo
  5. Licencia
  6. Contacto

Acerca del proyecto

image

SiSedeInversiones, es un paquete de python diseñada para automatizar la tarea de recolectar información de los proyectos de inversión pública de Perú que se encuentran en el "Sistema de Seguimiento de Inversiones (SSI)".

SiSedeInversiones hace uso de los Códigos Únicos de Inversiones (CUI) de los proyectos de inversión para realizar la consulta en el portal del SSI, de donde extrae la información sobre los:

  • Datos generales
  • Información financiera
  • Contratos
  • InfObras

Asimismo, también puede recolectar la información de los proyectos, que se encuentran en el:

  • Formato N°08-A Registros en la Fase de Ejecución Ejemplo
  • La lista de ejecución simple pública. Ejemplo

En ese sentido, SiSedeInversiones luego de realizar las consultas automáticas e identificar la información a recolectar generará un archivo .xlsx que reunira los datos relacionados al proyecto consultado usando su CUI.

(back to top)

Construido con

RPA-Python

(back to top)

Empezando

Para usar el paquete SiSedeInversiones, es necesario tener en cuenta lo siguiente:

Pre-requisitos

El paquete fue desarrollado para python v3.11 principalmente. Aunque se hizo algunas pruebas con las versiones v3.10.

Instalación

En la consola:

(.venv) pip install SiSedeInversiones

Al ejecutar este comando, instalamos el paquete SiSedeInversiones.

Atributos para el uso del paquete

Los atributos que recibe el paquete son los siguientes:

  • file_read: Es el path de la dirección donde esta ubicado el archivo que contiene los CUI's, el paquete recibe archivos en formato .csv y no otros.
  • num_range: Inidcamos el rango de registros que se trabajaran, ya sean desde el registro 5_10, 2_20... Este rango se pone a criterio del que lo use.
  • path_export: Es la dirección de la carpeta donde se guardara el archivo que contiene toda la información que se scrapeo.
  • file_type: Aqui indicamos el tipo de archivo que se generará al exportar la información. De momento se tiene habilitado para .xlsx
  • year: En este atributo indicamos el año de los registros que se trabajaran. Ponerlo en formato string.

Archivo del atributo file_read

El paquete recibe un archivo .csv en el atributo file_read, este archivo debe tener dentro una columna que se llame 'cui' que contenga los Códigos Únicos de Inversion de los proyectos que quiere extraer la información que se comparte en el Sistema de Seguimiento de Inversiones.

cui ... ...
2055893 ... ...
2055895 ... ...
2107767 ... ...
2112478 ... ...
2149746 ... ...
...

Nota: Es necesario que dentro del archivo .csv la columna que tenga la lista de los CUI's sea llamada "cui" en minuscula. El paquete esta diseñado para ubicar dicha columna de un archivo .csv.

(back to top)

Uso

Para el uso del paquete SiSedeInversiones debemos seguir los siguiente pasos.

Para Visual Studio Code (VSC) seguimos los siguientes pases:

  • Importamos el paquete.
[\example.py]

from sisedeinversiones.main import SSI
  • Luego creamos los siguientes atributos.
[\example.py]

file_read = "/ruta/a/su/directorio/[nombre_archivo].csv"
path_export = "/ruta/a/su/directorio/de/destino"
num_range = "[número-inicio]_[número-final]"
file_type = ".xlsx"
year = "[año]"
  • Instanciamos el objeto SSI
[\example.py]

scraper = SSI(file_read, num_range, path_export, file_type, year)

Importante
Debemos mantener el orden de los atributos que se usan para instanciar la clase SSI.

  • Luego de instanciarlo en una clase scraper, podemos usar los métodos de la clase SSI.

El metodo main_ssi() se dedica a la extracción de la información que se encuentra en el portal principal del Sistema de Seguimiento de Inversiones (https://ofi5.mef.gob.pe/ssi/ssi/Index)

[\example.py]

scraper.main_ssi()

image

Con el metodo format_eight() extraemos información del "Formato N°08-A Registros en la Fase de Ejecución"

[\example.py]

scraper.format_eight()

image

El metodo list_ejecución() se dedica a descargar información de la página "Lista de ejecución simple pública"

[\example.py]

scraper.list_ejecucion()

image

  • Por lo tanto, el código completo para ejecutar el paquete es el siguiente:
[\example.py]

# Importamos la libreria
from sisedeinversiones.main import SSI

# Creamos los atribuitos
file_read = "/ruta/a/su/directorio/[nombre_archivo].csv"
path_export = "/ruta/a/su/directorio/de/destino"
num_range = "[número-inicio]_[número-final]"
file_type = ".xlsx"
year = "[año]"

# Instanciamos la clase SSI
scraper = SSI(file_read, num_range, path_export, file_type, year)

# Llamamos al metodo main_ssi()
scraper.main_ssi()

# Llamamos al método format_eight()
scraper.format_eight()

# Llamamos al método list_ejecucion()
scraper.list_ejecucion()
  • Ejecutamos el archivo en la consola
(.venv) python example.py
  • Se activa una terminal que controla el paquete rpa que controla un navegador. Alli identificará la información que se estará almacenando en una lista. Cuando se activa este proceso se debe dejar este navegador sin usarlo.

Importante: Si durante el proceso de extracción, el navegador se interrumpe por acción del que maneja, por falta de información u otra razón.
En ese caso, se debe dar click a la consola que controla el navegador y alli se debe presionar los siguientes teclados "crtl+C" dos veces y se cerrara esa consola. Luego recien se debe cerrar el navegador que estaba controlando.

Para más ejemplos, por favor revise la Documentación

(back to top)

Licencia

Este repositorio esta autorizado bajo la licencia MIT. Ver LICENCIA para mas detalles.

(back to top)

Contacto

Jelsin Palomino - @facebook - jstpalomino@hotmail.com

Enlace del proyecto: https://github.com/JelsinPalomino/SiSedeInversiones

(back to top)

Release files for SiSedeInversiones 1.0.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for SiSedeInversiones 1.0.0
File Size Uploaded
SiSedeInversiones-1.0.0.tar.gz 16.7 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for SiSedeInversiones 1.0.0
File Interpreter ABI Platform
SiSedeInversiones-1.0.0-py3-none-any.whl Python 3 none any Details

Total release size: 38.7 kB

Release files / SiSedeInversiones-1.0.0.tar.gz

Download URL SiSedeInversiones-1.0.0.tar.gz
Size 16.7 kB
Tags Source
SHA-256 checksum
How to use checksums
55cb826550956cda2b7ad5376fc3590bb84d40e25eb4464c9b0465ff93bca623
BLAKE2b-256 checksum
How to use checksums
893cb69c68045646855b43c8794a6703543222c3d32e3a10f64035dd344feb2a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.11.0

Release files / SiSedeInversiones-1.0.0-py3-none-any.whl

Download URL SiSedeInversiones-1.0.0-py3-none-any.whl
Size 22.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
5727b16c4d72256541cf181aa115332b548ba6e0112be9b6c018910b214ba4fa
BLAKE2b-256 checksum
How to use checksums
b33f25155f797f4ade86f12618565a41fec7fa4bec5deb329a8c8f8692316ad2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.11.0

Release history Release notifications | RSS feed

This release

1.0.0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page