/
scrap.py
51 lines (45 loc) · 1.46 KB
/
scrap.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
# -*- coding: utf-8 -
import urllib2
from BeautifulSoup import BeautifulSoup
# Use simplejson or Python 2.6 json, prefer simplejson.
try:
import simplejson as json
except ImportError:
import json
BASE_URL="http://www3.registraduria.gov.co/censo/_censoresultado.php?nCedula=%s"
CEDULAS="cedulas.txt"
OUTPUT="votacion.json"
USER_AGENT="Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.6; en-US; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3"
def parse(data):
""" Toma la página completa y le saca la información relevante"""
soup = BeautifulSoup(data)
table = soup("td")
items=[]
for entry in table:
try:
if entry.string is not None:
items.append(entry.string.strip())
except AttributeError:
pass
return items
def get_sitio(cedula, text=False):
""" Se conecta con la registraduría y entrega un objecto JSON con la info"""
url = BASE_URL % cedula
request = urllib2.Request(url)
opener = urllib2.build_opener()
# sino se agrega un USER_AGENT valido, el servidor se queja porque no
# soporta frames :(
request.add_header('User-Agent', USER_AGENT)
data = opener.open(request).read()
sitio = {cedula: parse(data)}
if not text:
return sitio
else:
return json.dumps(sitio)
if __name__=="__main__":
salida = {}
for cedula in open(CEDULAS):
salida.update(get_sitio(cedula))
out = open(OUTPUT,'w')
json.dump(salida, out)
out.close()