Miguel Beltra:
La verdad que nunca me puse a investigar sobre lxml. Ya me pongo a googlear
sobre el tema. Quizás tenes razón.
Gracias.

2015-05-16 14:11 GMT-03:00 Miguel Beltran R. <yourpa...@gmail.com>:

> Parece que tienes algo en tu función "escape" que modifica la pagina (en
> etree.XML(escape(tablas)))
>
> "aacute" deberia ser "&aacute;"  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/
>
>
_______________________________________________
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