Hola, Soy nuevo en python y siempre tuve problemas con el uso de expresiones regulares, sin embargo me animé a escribir un pequeño script que haga un par de peticiones ¨POST para obtener información de una página. El problema es que me arrojaba el siguiente error: lxml.etree.XMLSyntaxError: Entity 'aacute' not defined, line 1, column 3747
Googlé y descubrí que tengo que habilitar aacute en <!DOCTYPE> o algo así, probé con la librería codecs, pero no sé muy bien cómo usarla, porque me tira diferentes errores. Finalmente creí dar con la solución cuando usé “escape” que me arrojó: lxml.etree.XMLSyntaxError: Start tag expected, '<' not found, line 1, column 1 solo debería borrar el carácter ese que está de más, entonces probé recorrer la variable usando la siguiente expresión: variable2=(escape(variable2)).replace(*">>"*,*">"*) variable2=(escape(variable2)).replace(*"<<"*,*"<"*) Más pienso el código y más me convenzo que mi problema está en el uso de expresiones regulares. Si quieren echar un vistazo, les dejo el código. Si a alguien se les ocurre una expresion regular que ponga fin a mi problema, gracias, sino dejaré el código en mi escritorio para cuando gane mayor experiencia en python import *httplib*, urllib, urllib2, re, *xml*, *codecs*, *unicodedata* from lxml import etree from lib2to3.fixer_util import *String* from xml.sax.saxutils import escape def *conectar*(CALLE, ALTURA): tablas_abre=*"<table>"* tablas_cierra=*"</table>"* parametros = urllib.urlencode({*'CALLE'*: CALLE,*'ALTURA'*: ALTURA, *'dedonde'*: *'fonos'*}) i=1 h_cookie=urllib2.HTTPCookieProcessor() opener= urllib2.build_opener(h_cookie) #f = urllib2.*urlopen*(" http://www.webdedatos.com/ZIPs/cpas/zipscalles.php", *parametros*) urllib2.install_opener(opener) f=urllib2.urlopen(*"http://www.webdedatos.com/ZIPs/cpas/zipscalles.php <http://www.webdedatos.com/ZIPs/cpas/zipscalles.php>"*, parametros); #print f.read() aux=f.read() veces=int(cantidad(aux)) t=traer_solo_tabla(aux) #*cabeceras* = {"Content-type": "application/x-*www*-form-*urlencoded*","Accept": "text/plain"} #abrir_conexion = httplib.HTTPConnection("www.webdedatos.com:80") #abrir_conexion.request("POST", "/ZIPs/*cpas*/zipscalles.php", *parametros*, *cabeceras*) #*respuesta* = abrir_conexion.getresponse() #print respuesta.status i+1; while(i<=veces): f = urllib2.urlopen(*"http://www.webdedatos.com/ZIPs/cpas/zipscalles.php?verPagina= <http://www.webdedatos.com/ZIPs/cpas/zipscalles.php?verPagina=>"* +str(veces)) veces=veces-1 aux3=f.read() t+=traer_solo_tabla(aux3) tablas=tablas_abre+t+tablas_cierra #print f.read() #t+=f.read() return tablas def *cantidad*(sitio): vari = re.search(*"1 de.+</center></b><center>"*,sitio) sub_palabra = vari.group(0) sub_palabra = sub_palabra.replace(*"1 de"*,*" "*) sub_palabra = sub_palabra.replace(*"</center></b><center>"*,*" "*) return sub_palabra def *traer_solo_tabla*(variable): vari = re.search(*"<br><tr><td ALIGN=...+"*,variable) variable2 = vari.group() variable2=variable2.replace(*"<br>"*,*" "*) variable2=variable2.replace(*"<table>"*,*" "*) variable2=variable2.replace(*"</table>"*,*" "*) variable2=variable2.replace(*"<center>"*,*" "*) variable2=variable2.replace(*"</center>"*,*" "*) variable2=(escape(variable2)).replace(*">>"*,*">"*) variable2=(escape(variable2)).replace(*"<<"*,*"<"*) regexp=re.compile(*"<a href=..........................................>"*) variable2=regexp.sub(*" "*,variable2) variable2=variable2.replace(*"</a>"*,*" "*) return variable2 def *imprimir*(tablas, BARRIO): #el codigo de imprimir lo copie de un foro solo le agregué escape para saber cual era el error print tablas tabla = etree.XML(escape(tablas)) rows = iter(tabla) *headers* = [col.text for col in next(rows)] for row in rows: values = [col.text for col in row] if(values[4]==BARRIO): print values def *main*(): ALTURA = int(input(*"ingrese la altura de la calle: "*)) CALLE = raw_input(*"ingrese el nombre de la calle: "*) BARRIO = raw_input(*"ingrese el nombre del barrio: "*) respuesta=conectar(CALLE, ALTURA) imprimir(respuesta, BARRIO) #print *tablas* if __name__ == *'__main__'*: main() Desde ya, muchas gracias.
_______________________________________________ Python-es mailing list Python-es@python.org https://mail.python.org/mailman/listinfo/python-es FAQ: http://python-es-faq.wikidot.com/