Parece que tienes algo en tu función "escape" que modifica la pagina (en
etree.XML(escape(tablas)))

"aacute" deberia ser "á"  que se muetra como "á"

Otra cosa es que no creo que sea conveniente usar expreciones regulares,
¿seguro que no lo puedes hacer usando solo el selector de lxml?

El 7 de mayo de 2015, 19:10, Alberto Perez <ksian1...@gmail.com> escribió:

> 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/
>
>


-- 
________________________________________
Lo bueno de vivir un dia mas
es saber que nos queda un dia menos de vida
_______________________________________________
Python-es mailing list
Python-es@python.org
https://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/

Responder a