Cada provincia tiene un codigo. Ese codigo se usa para formar la pagina a la cual se le va hacer la peticion. Como datos hay que pasarle la variable localidad con el nombre entero o uno parte de la ciudad que estemos buscando. Como resultaro obtendremos codigo html, que representa una lista HTML con los resultado.
Aca les paso el codigo, esta hecho en python pero es muy facil de interpretar y llevar a otro lenguaje.
import urllib
import urllib2
import string
from xml.dom import minidom
import unicodedata
allprov = ["Buenos Aires","Catamarca","Chaco","Chubut","Cordoba","Corrientes","Entre Rios","Formosa","Jujuy","La Pampa","La Rioja","Mendoza","Misiones","Neuquen","Rio Negro","Salta","San Juan","San Luis","Santa Cruz","Santa Fe","Santiago del Estero","Tierra del Fuego","Tucuman"]
def remove_accents(str):
nkfd_form = unicodedata.normalize('NFKD', unicode(str))
only_ascii = nkfd_form.encode('ASCII', 'ignore')
return only_ascii
def codprov(prov):
provincia = prov.upper()
if provincia == "CAPITAL FEDERAL":
return "C"
if provincia == "Ciudad Autonoma de Buenos Aires".upper():
return "C"
if provincia == "Buenos Aires".upper():
return "B"
if provincia == "Catamarca".upper():
return "K"
if provincia == "Chaco".upper():
return "H"
if provincia == "Chubut".upper():
return "U"
if provincia == "Cordoba".upper():
return "X"
if provincia == "Corrientes".upper():
return "W"
if provincia == "Entre Rios".upper():
return "E"
if provincia == "Formosa".upper():
return "P"
if provincia == "Jujuy".upper():
return "Y"
if provincia == "La Pampa".upper():
return "L"
if provincia == "La Rioja".upper():
return "F"
if provincia == "Mendoza".upper():
return "M"
if provincia == "Misiones".upper():
return "N"
if provincia == "Neuquen".upper():
return "O"
if provincia == "Rio Negro".upper():
return "R"
if provincia == "Salta".upper():
return "A"
if provincia == "San Juan".upper():
return "J"
if provincia == "San Luis".upper():
return "D"
if provincia == "Santa Cruz".upper():
return "Z"
if provincia == "Santa Fe".upper():
return "S"
if provincia == "Santiago del Estero".upper():
return "G"
if provincia == "Tierra del Fuego".upper():
return "V"
if provincia == "Tucuman".upper():
return "T"
return "NONE"
def get_text(arbol):
return arbol.firstChild.data
def buscar_codigo(city,provincia):
cod = codprov(provincia)
datos = urllib.urlencode({'localidad' : city})
url = 'http://www.correoargentino.com.ar/consultas/cpa/obtener_localidades/' + cod
o = urllib2.build_opener()
res = o.open(url, datos)
pagina = res.read().replace("&","")
if pagina == "Error":
return []
arbol = minidom.parseString(pagina)
adds = arbol.getElementsByTagName('option')
l = []
for a in adds:
s = get_text(a)
ss = s.split("(") #[s.find("(") + 1 : ]
l.append( ( remove_accents(ss[0]) ,int(ss[1][:len(ss[1]) - 1])))
return l
def read_pot_file(filename):
f = open(filename, "r")
ciudades = []
while True:
linea = f.readline()
if not linea: break
ciudades.append(linea[:len(linea) - 2].split(','))
f.close()
return ciudades
def generar_todos(filename):
allf = open(filename,'a')
for p in allprov:
ls = buscar_codigo("",p)
for l in ls:
allf.write(l[0] + " , " + codprov(p) + ' , ' + str(l[1]) + "\n")
print (l[0] + " , " + codprov(p) + ' , ' + str(l[1]) )
allf.close()
if __name__ == "__main__":
print "1. Buscar todos"
print "2. Buscar uno simple"
a = raw_input()
if a == "1":
print "Ingrese nombre de archivo de salida: "
f = raw_input()
generar_todos(f)
if a == "2":
print "Ingrese nombre de la ciudad: "
c = raw_input()
print "Ingrese provincia: "
p = raw_input()
ll = buscar_codigo(c,p)
for l in ll:
print (l[0] + " " + l[1])
No hay comentarios:
Publicar un comentario