ceepur-scraper


Nameceepur-scraper JSON
Version 0.1.1 PyPI version JSON
download
home_pagehttps://github.com/jicruz96/ceepur-scraper
SummaryUn programa para extraer todos los datos públicos del registro electoral de Puerto Rico, accesibles a través de https://consulta.ceepur.org/
upload_time2024-09-29 16:24:11
maintainerNone
docs_urlNone
authorJ.I. Cruz
requires_python<4.0,>=3.9
licenseNone
keywords puerto-rico electoral scraper ceepur
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # ceepur-scraper

Un programa para extraer todos los datos públicos del registro electoral de Puerto Rico, accesibles a través de [https://consulta.ceepur.org/](https://consulta.ceepur.org/).

El programa toma alrededor de 5 horas para bajar todos los datos posibles.

```bash
pip install ceepur-scraper
```

## Uso

Para correr el scraper, simplemente ejecute lo siguiente en tu terminal luego de instalar el paquete:

```bash
ceepur-scraper
```

Utiliza la opción `--help` para ver todas las opciones disponibles:

```bash
$ ceepur-scraper --help
usage: ceepur-scraper [-h] [--output OUTPUT_FILENAME] [--max-id MAX_ID] [--min-id MIN_ID]
                      [--reverse] [--max-concurrent-tasks MAX_CONCURRENT_TASKS]
                      [--continue-previous-scrape] [--save-descriptions] [--debug]

optional arguments:
  -h, --help            show this help message and exit
  --output OUTPUT_FILENAME, -o OUTPUT_FILENAME
                        The filename to write the scraped voter records to. Defaults to
                        voter_records.csv.
  --max-id MAX_ID       The maximum voter ID to scrape. Cannot be greater than 9,999,999.
  --min-id MIN_ID       The minimum voter ID to scrape. Cannot be less than 1.
  --reverse             Whether to scrape in reverse order.
  --max-concurrent-tasks MAX_CONCURRENT_TASKS
                        The maximum number of concurrent tasks to run. Defaults to 500.
  --continue-previous-scrape, -c
                        Whether to continue a previous scrape that was interrupted.
  --save-descriptions   Whether to save the descriptions of the voter's status and category. ⚠️
                        WARNING: This will significantly increase the size of the output file.
  --debug, -d           Run in debug mode.
```


Esto producirá un archivo llamado `voter_records.csv` en el directorio actual que se parecerá a esta tabla:

| `NumeroElectoral` | `Category` | `FechaNacimiento` | `Precinto` | `Status` | `Unidad` |
| ----------------- | ---------- | ----------------- | ---------- | -------- | -------- |
| `4980113`         | `M`        | `22-10-1926`      | `1`        | `E`      | `2`      |


### Descripción de `Category` y `Status`

El campo `Category` es un solo carácter. Su significado depende del valor de `Status`.

Expanda la siguiente sección para ver el significado de cada categoría:

<details>
<summary>Haz click para expandir...</summary>

El `Status` de un elector puede ser:

* `A`: Activo
* `I`: Inactivo
* `E`: Excluido

El campo `Category` da más información acerca del `Status` de un elector:

* Para electores con status `A`, el campo `Category` puede ser:
    * `1`: `VOTÓ EN NOVIEMBRE DE 2020`
    * `2`: `NO VOTÓ EN NOVIEMBRE DE 2020`
    * `3`: `INGRESÓ POR MEDIO DE NUEVA INSCRIPCIÓN`
    * `4`: `INGRESO POR MEDIO DE INSCRIPCIÓN ESPECIAL (Reactivación)`
    * `5`: `INGRESO POR MEDIO DE INCLUSIÓN (Administrativa)`
* Para electores con status `I`, el campo `Category` puede ser:
    * `1`: `INACTIVO EN LA DEPURACIÓN DE LISTAS POSTERIOR A LAS ELECCIONES GENERALES DE 1980`
    * `2`: `INACTIVO EN LA DEPURACIÓN DE LISTAS POSTERIOR A LAS ELECCIONES GENERALES DE 1984`
    * `3`: `INACTIVO EN LA DEPURACIÓN DE LISTAS POSTERIOR A LAS ELECCIONES GENERALES DE 1988`
    * `4`: `INACTIVO EN LA DEPURACIÓN DE LISTAS POSTERIOR A LAS ELECCIONES GENERALES DE 1992`
    * `5`: `INACTIVO EN LA DEPURACIÓN DE LISTAS POSTERIOR A LAS ELECCIONES GENERALES DE 1996`
    * `6`: `INACTIVO EN LA DEPURACIÓN DE LISTAS POSTERIOR A LAS ELECCIONES GENERALES 2000`
    * `7`: `INACTIVO EN LA DEPURACIÓN DE LISTAS POSTERIOR A LAS ELECCIONES GENERALES 2004`
    * `8`: `INACTIVO EN LA DEPURACIÓN DE LISTAS POSTERIOR A LAS ELECCIONES GENERALES 2008`
    * `9`: `INACTIVO EN LA DEPURACIÓN DE LISTAS POSTERIOR A LAS ELECCIONES GENERALES 2012`
    * `A`: `INACTIVO EN LA DEPURACIÓN DE LISTAS POSTERIOR A LAS ELECCIONES GENERALES 2020`
* Para electores con status `E`, el campo `Category` puede ser:
  * `A`: `EXCLUSIÓN ADMINISTRATIVA`
  * `C`: `NO ES CIUDADANO AMERICANO`
  * `D`: `DUPLICADO`
  * `E`: `NO TIENE 18 AÑOS DE EDAD`
  * `M`: `MUERTE`
  * `P`: `NO ES PERSONA EN PETICIÓN`
  * `R`: `NO ES RESIDENTE DEL PRECINTO`
  * `T`: `INCAPACITADO MENTAL`

</details>


También puedes correr el scraper con la opción `--save-descriptions` para guardar una descripción de cada categoría en el archivo final (⚠️ ¡Esto aumentará el tamaño del archivo significativamente!).


### ¿Qué hacer si hay un error?

Puedes intentar de recorrer un "scrape" con la opción `--continue-previous-scrape` (o `-c`) para intentar continuar el scrape desde donde se quedó.

Si todavía hay fallos, usa la opción `--debug` (o `-d`) para ver el error completo. Si no sabes como resolverlo, [abre un issue](https://github.com/jicruz96/ceepur-scraper/issues/new) en este repositorio.

## Ejemplo

```bash
# Descargar electores 1-100 y guardar en "resultados.csv", incluyendo descripciones de categorías
ceepur-scraper --output resultados.csv --min-id 1 --max-id 100 --save-descriptions
```

            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/jicruz96/ceepur-scraper",
    "name": "ceepur-scraper",
    "maintainer": null,
    "docs_url": null,
    "requires_python": "<4.0,>=3.9",
    "maintainer_email": null,
    "keywords": "puerto-rico, electoral, scraper, ceepur",
    "author": "J.I. Cruz",
    "author_email": "ji@jicruz.com",
    "download_url": "https://files.pythonhosted.org/packages/91/44/2a734d425a1082e40e9388e600bcb67dd87d7d59f7c11b06a923c40d429c/ceepur_scraper-0.1.1.tar.gz",
    "platform": null,
    "description": "# ceepur-scraper\n\nUn programa para extraer todos los datos p\u00fablicos del registro electoral de Puerto Rico, accesibles a trav\u00e9s de [https://consulta.ceepur.org/](https://consulta.ceepur.org/).\n\nEl programa toma alrededor de 5 horas para bajar todos los datos posibles.\n\n```bash\npip install ceepur-scraper\n```\n\n## Uso\n\nPara correr el scraper, simplemente ejecute lo siguiente en tu terminal luego de instalar el paquete:\n\n```bash\nceepur-scraper\n```\n\nUtiliza la opci\u00f3n `--help` para ver todas las opciones disponibles:\n\n```bash\n$ ceepur-scraper --help\nusage: ceepur-scraper [-h] [--output OUTPUT_FILENAME] [--max-id MAX_ID] [--min-id MIN_ID]\n                      [--reverse] [--max-concurrent-tasks MAX_CONCURRENT_TASKS]\n                      [--continue-previous-scrape] [--save-descriptions] [--debug]\n\noptional arguments:\n  -h, --help            show this help message and exit\n  --output OUTPUT_FILENAME, -o OUTPUT_FILENAME\n                        The filename to write the scraped voter records to. Defaults to\n                        voter_records.csv.\n  --max-id MAX_ID       The maximum voter ID to scrape. Cannot be greater than 9,999,999.\n  --min-id MIN_ID       The minimum voter ID to scrape. Cannot be less than 1.\n  --reverse             Whether to scrape in reverse order.\n  --max-concurrent-tasks MAX_CONCURRENT_TASKS\n                        The maximum number of concurrent tasks to run. Defaults to 500.\n  --continue-previous-scrape, -c\n                        Whether to continue a previous scrape that was interrupted.\n  --save-descriptions   Whether to save the descriptions of the voter's status and category. \u26a0\ufe0f\n                        WARNING: This will significantly increase the size of the output file.\n  --debug, -d           Run in debug mode.\n```\n\n\nEsto producir\u00e1 un archivo llamado `voter_records.csv` en el directorio actual que se parecer\u00e1 a esta tabla:\n\n| `NumeroElectoral` | `Category` | `FechaNacimiento` | `Precinto` | `Status` | `Unidad` |\n| ----------------- | ---------- | ----------------- | ---------- | -------- | -------- |\n| `4980113`         | `M`        | `22-10-1926`      | `1`        | `E`      | `2`      |\n\n\n### Descripci\u00f3n de `Category` y `Status`\n\nEl campo `Category` es un solo car\u00e1cter. Su significado depende del valor de `Status`.\n\nExpanda la siguiente secci\u00f3n para ver el significado de cada categor\u00eda:\n\n<details>\n<summary>Haz click para expandir...</summary>\n\nEl `Status` de un elector puede ser:\n\n* `A`: Activo\n* `I`: Inactivo\n* `E`: Excluido\n\nEl campo `Category` da m\u00e1s informaci\u00f3n acerca del `Status` de un elector:\n\n* Para electores con status `A`, el campo `Category` puede ser:\n    * `1`: `VOT\u00d3 EN NOVIEMBRE DE 2020`\n    * `2`: `NO VOT\u00d3 EN NOVIEMBRE DE 2020`\n    * `3`: `INGRES\u00d3 POR MEDIO DE NUEVA INSCRIPCI\u00d3N`\n    * `4`: `INGRESO POR MEDIO DE INSCRIPCI\u00d3N ESPECIAL (Reactivaci\u00f3n)`\n    * `5`: `INGRESO POR MEDIO DE INCLUSI\u00d3N (Administrativa)`\n* Para electores con status `I`, el campo `Category` puede ser:\n    * `1`: `INACTIVO EN LA DEPURACI\u00d3N DE LISTAS POSTERIOR A LAS ELECCIONES GENERALES DE 1980`\n    * `2`: `INACTIVO EN LA DEPURACI\u00d3N DE LISTAS POSTERIOR A LAS ELECCIONES GENERALES DE 1984`\n    * `3`: `INACTIVO EN LA DEPURACI\u00d3N DE LISTAS POSTERIOR A LAS ELECCIONES GENERALES DE 1988`\n    * `4`: `INACTIVO EN LA DEPURACI\u00d3N DE LISTAS POSTERIOR A LAS ELECCIONES GENERALES DE 1992`\n    * `5`: `INACTIVO EN LA DEPURACI\u00d3N DE LISTAS POSTERIOR A LAS ELECCIONES GENERALES DE 1996`\n    * `6`: `INACTIVO EN LA DEPURACI\u00d3N DE LISTAS POSTERIOR A LAS ELECCIONES GENERALES 2000`\n    * `7`: `INACTIVO EN LA DEPURACI\u00d3N DE LISTAS POSTERIOR A LAS ELECCIONES GENERALES 2004`\n    * `8`: `INACTIVO EN LA DEPURACI\u00d3N DE LISTAS POSTERIOR A LAS ELECCIONES GENERALES 2008`\n    * `9`: `INACTIVO EN LA DEPURACI\u00d3N DE LISTAS POSTERIOR A LAS ELECCIONES GENERALES 2012`\n    * `A`: `INACTIVO EN LA DEPURACI\u00d3N DE LISTAS POSTERIOR A LAS ELECCIONES GENERALES 2020`\n* Para electores con status `E`, el campo `Category` puede ser:\n  * `A`: `EXCLUSI\u00d3N ADMINISTRATIVA`\n  * `C`: `NO ES CIUDADANO AMERICANO`\n  * `D`: `DUPLICADO`\n  * `E`: `NO TIENE 18 A\u00d1OS DE EDAD`\n  * `M`: `MUERTE`\n  * `P`: `NO ES PERSONA EN PETICI\u00d3N`\n  * `R`: `NO ES RESIDENTE DEL PRECINTO`\n  * `T`: `INCAPACITADO MENTAL`\n\n</details>\n\n\nTambi\u00e9n puedes correr el scraper con la opci\u00f3n `--save-descriptions` para guardar una descripci\u00f3n de cada categor\u00eda en el archivo final (\u26a0\ufe0f \u00a1Esto aumentar\u00e1 el tama\u00f1o del archivo significativamente!).\n\n\n### \u00bfQu\u00e9 hacer si hay un error?\n\nPuedes intentar de recorrer un \"scrape\" con la opci\u00f3n `--continue-previous-scrape` (o `-c`) para intentar continuar el scrape desde donde se qued\u00f3.\n\nSi todav\u00eda hay fallos, usa la opci\u00f3n `--debug` (o `-d`) para ver el error completo. Si no sabes como resolverlo, [abre un issue](https://github.com/jicruz96/ceepur-scraper/issues/new) en este repositorio.\n\n## Ejemplo\n\n```bash\n# Descargar electores 1-100 y guardar en \"resultados.csv\", incluyendo descripciones de categor\u00edas\nceepur-scraper --output resultados.csv --min-id 1 --max-id 100 --save-descriptions\n```\n",
    "bugtrack_url": null,
    "license": null,
    "summary": "Un programa para extraer todos los datos p\u00fablicos del registro electoral de Puerto Rico, accesibles a trav\u00e9s de https://consulta.ceepur.org/",
    "version": "0.1.1",
    "project_urls": {
        "Homepage": "https://github.com/jicruz96/ceepur-scraper",
        "Repository": "https://github.com/jicruz96/ceepur-scraper"
    },
    "split_keywords": [
        "puerto-rico",
        " electoral",
        " scraper",
        " ceepur"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "37034b7083cbb5a651dc473110890bf419c1c46b9cca117fb683180b96497f22",
                "md5": "0c1cfb595a0371063bbb6363592542a3",
                "sha256": "ea4b4fc1f06fe59d6c55b7ef7e7240258654cf334cf510e7835aad6ffb26552f"
            },
            "downloads": -1,
            "filename": "ceepur_scraper-0.1.1-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "0c1cfb595a0371063bbb6363592542a3",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": "<4.0,>=3.9",
            "size": 7816,
            "upload_time": "2024-09-29T16:24:10",
            "upload_time_iso_8601": "2024-09-29T16:24:10.436506Z",
            "url": "https://files.pythonhosted.org/packages/37/03/4b7083cbb5a651dc473110890bf419c1c46b9cca117fb683180b96497f22/ceepur_scraper-0.1.1-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "91442a734d425a1082e40e9388e600bcb67dd87d7d59f7c11b06a923c40d429c",
                "md5": "8f32bd5ecd56bacec36a70bdd5a5e67a",
                "sha256": "d125950ed9282ed2a1bddf7daa20f48adbbce6a83029c5257cc3a96e213ce5dc"
            },
            "downloads": -1,
            "filename": "ceepur_scraper-0.1.1.tar.gz",
            "has_sig": false,
            "md5_digest": "8f32bd5ecd56bacec36a70bdd5a5e67a",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": "<4.0,>=3.9",
            "size": 6507,
            "upload_time": "2024-09-29T16:24:11",
            "upload_time_iso_8601": "2024-09-29T16:24:11.718810Z",
            "url": "https://files.pythonhosted.org/packages/91/44/2a734d425a1082e40e9388e600bcb67dd87d7d59f7c11b06a923c40d429c/ceepur_scraper-0.1.1.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-09-29 16:24:11",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "jicruz96",
    "github_project": "ceepur-scraper",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": false,
    "lcname": "ceepur-scraper"
}
        
Elapsed time: 0.35794s