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