Skip to content

Commit

Permalink
reorder and update documentation
Browse files Browse the repository at this point in the history
  • Loading branch information
jorgeatgu committed Nov 21, 2018
1 parent 82c1cf2 commit 6a863ea
Show file tree
Hide file tree
Showing 13 changed files with 445 additions and 47 deletions.
53 changes: 29 additions & 24 deletions README.md
Expand Up @@ -2,41 +2,46 @@

Aquí todas las movidas para obtener los datos del Ayuntamiento de Zaragoza, y a partir de ellos generar múltiples estadísticas para las gráficas de @Bislai.

## Python

## Node + Lodash
### Plenos

Comprobar que la matriz que contiene todas las mociones esta actualizada en ```mociones/mociones.json``` Lanzamos lodash contra la matriz. Para ello hay un script de NPM que primero actualiza los objetos de los partidos y una vez actualizado contabiliza los diferentes archivos correspondientes a cada partido.
Si quieres tocar algo del scraper las dependecias se gestionan con pipenv. Lo primero hacemos un ```pipenv install``` para que funcione todo correctamente.

```
npm run data:bislai
```
Lanzamos el script con ```python mociones.py``` en mi caso lo lanzo con pipenv ```pipenv run python mociones.py```

Después de lanzar el script obtenemos para cada partido:
<blockquote>
Como el comando es muy largo y no estamos para perder tiempo es recomendable hacerse un alias ```prp=pipenv run python```
</blockquote>

- Votos a favor del resto de partidos
- Votos en contra del resto de partidos
- Abstenciones
- Votos en su contra del resto de partidos
- Votos a favor del resto de partidos
El scraper espera tres parametros
- El primero la url de la moción que queremos obtener.
- El segundo el día que se celebro.
- El tercero el mes que se celebro.

Para las estadísticas generales obtenemos:
Estos dos últimos parametros son para generar un nombre legible para el CSV.

- ¿Quién vota a favor?
- ¿Quién vota en contra?
- ¿Quién se abstiene?
- Cuantás mociones se han presentado
- Resultado de las **votaciones**, no son mociones.
- Votaciones por unanimidad
- La soledad del pleno, aquellos partidos que votan solos ya se a favor, en contra o abstención.
Una vez lanzado obtenemos en un CSV:
- El número de la moción
- El partido que lo ha presentado
- La url con la moción completa
- El texto de cada moción

## Bash
### Actas

Documentado todo el proceso en bash/commands.md
Si quieres tocar algo del scraper las dependecias se gestionan con pipenv. Lo primero hacemos un ```pipenv install``` para que funcione todo correctamente.

## Python
Lanzamos el script con ```python actas.py``` en mi caso lo lanzo con pipenv ```pipenv run python actas.py```

Por ahora el script almacena en un CSV todos los enlaces a las actas que se han celebrado entre 2015 y 2019.

**WIP**
### Votaciones

Necesitamos pipenv para gestionar las dependencias de Python, por ahora solo request. Lanzamos el scraper con ```pipenv run python lurte.py```
En proceso...

Por ahora lo que hay no es suficiente ya que para las votaciones cada día emplean un termino diferente.

## Bash

El scraping con bash ya ha pasado a la historia. Aún así esta documentado todo el proceso en bash/commands.md

15 changes: 15 additions & 0 deletions actas/Pipfile
@@ -0,0 +1,15 @@
[[source]]
name = "pypi"
url = "https://pypi.org/simple"
verify_ssl = true

[dev-packages]

[packages]
requests = "*"
beautifulsoup4 = "*"
html5lib = "*"
pylint = "*"

[requires]
python_version = "3.7"
158 changes: 158 additions & 0 deletions actas/Pipfile.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

38 changes: 38 additions & 0 deletions actas/actas.py
@@ -0,0 +1,38 @@
"""
Un pequeño script para descargar todas las actas de la legislatura 2015-2019
"""

import csv
import requests
from bs4 import BeautifulSoup
import html5lib

# Lista con los enlaces de los plenos de la última legislatura
lista_url = [
'http://www.zaragoza.es/ciudad/organizacion/plenos/activ_plenarias.htm',
'http://www.zaragoza.es/ciudad/organizacion/plenos/activ_plenarias_17.htm',
'http://www.zaragoza.es/ciudad/organizacion/plenos/activ_plenarias_16.htm',
'http://www.zaragoza.es/ciudad/organizacion/plenos/activ_plenarias_15.htm']

# Creamos un CSV
with open('actas-pdf.csv', 'w') as f:

# Activamos la escritura
fileCSV = csv.writer(f)
# Creamos la columna
fileCSV.writerow(['Enlace'])

# Ahora iteramos sobre la lista de URLS
for link in lista_url:
res = requests.get(link)
data = res.text
soup = BeautifulSoup(data, 'html5lib')

# Solo queremos los enlaces que contengan la clase PDF
pdf = soup.find_all('a', {'class': 'pdf'})

# Volvemos a iterar sobre la lista de enlaces que contienen la clase PDF
for elem in pdf:
# Ahora nos quedamos solamente con el enlace ya que no contienen mucha más información
link = elem.get('href')
fileCSV.writerow([link])
15 changes: 15 additions & 0 deletions plenos/Pipfile
@@ -0,0 +1,15 @@
[[source]]
name = "pypi"
url = "https://pypi.org/simple"
verify_ssl = true

[dev-packages]

[packages]
requests = "*"
beautifulsoup4 = "*"
html5lib = "*"
pylint = "*"

[requires]
python_version = "3.7"

0 comments on commit 6a863ea

Please sign in to comment.