[pyar] xml.etree.ElementTree

Augusto adtononi en gmail.com
Lun Dic 16 14:18:34 -03 2019


Buenas,

Cuidado con comprartir las credenciales de la API, esa parte no hace falta.

Después, tu función getInfoFromApi no devuelve nada. Fijate que tenes
comentada la línea del content

Tu idea es parar todo el source code de la página a un xml?


El lun., 16 dic. 2019 11:19, Federico Brest <federiconbrest en gmail.com>
escribió:

> Muchas gracias por responder tan pronto :)
> Va de nuevo el código completo:
>
> #import json
> import requests
> import io
> import xml.etree.ElementTree as ET
>
> def validar_cuit(cuit):
>     # validaciones minimas
>     if len(cuit) != 11:
>         #print("False")
>         return False
>
>     base = [5, 4, 3, 2, 7, 6, 5, 4, 3, 2]
>
>     #cuit = cuit.replace("-", "") # remuevo las barras
>
>     # calculo el digito verificador:
>     aux = 0
>     for i in range(10):
>         aux += int(cuit[i]) * base[i]
>
>     aux = 11 - (aux - (int(aux / 11) * 11))
>
>     if aux == 11:
>         aux = 0
>     if aux == 10:
>         aux = 9
>
>     #print("True")
>     return aux == int(cuit[10])
>
> def getInfoFromApi(cuit):
>     custom_header = {
>         'usuario_apikey': "Q2syVkQ2NW1UN2c3MWREWGSDDSWNQeWxVRnJVUT09",
>         'Cookie':
> "__cfduid=de5890d2d1645d87b18692a6ad91d6adsrtvcsf1576011069;
> PROVEEDOR=l5r3dteuh2rkge4t9qm85tl8sm; ROUTEID=.1",
>     }
>
>     url = 'https://informe.unproveedor.com/api/informes/solicitar/' +
> str(cuit)
>     args = {'formato':'xml', 'procesar_forzado':'1', 'cuit': cuit }
>
>     response = requests.get(url, headers=custom_header, data=args)
>     tree = ET.parse(response.text)
>     root = tree.getroot()
>     #content = response.json()
>
>     print("-- Status Code:", response.status_code)
>
>     return content
>
> def saveInfo(content, filename):
>     with io.open(filename, 'w', encoding='utf8') as file:
>         #json.dump(content, file, indent=4, ensure_ascii=False)
>         file.write(response.text)
>
> if __name__ == '__main__':
>     cuit = input("Ingrese un numero de cuit: ")
>
>     print("- Obteniendo información de", cuit)
>     info = getInfoFromApi(cuit)
>
>     cuitValido = validar_cuit(cuit)
>     if cuitValido == False:
>         print("El Cuit ",cuit," es Invalido")
>         print("Presione una tecla para Finalizar...")
>         msvcrt.getch()
>     else:
>         print("cuil válido")
>
>     filename = cuit + '.xml'
>     saveInfo(info, filename)
>     print("- Guardado en", filename)
>
>     print("Presione una tecla para finalizar...")
>     msvcrt.getch()
>
> Abrazo, y nuevamente muchas gracias.
>
> El lun., 16 dic. 2019 a las 11:14, Lucas Paiva (<lucaspaiva.ar en gmail.com>)
> escribió:
>
>> Como estas? lo que pasa que la cosa esta justamente en la función que no
>> estas mostrandonos, si tiene las credentials del cliente sacaselas pero
>> mostranos como traes los datos de la api.
>> De todas maneras vos decis :
>> "cuando se supone que supone que deberìa crear un XML con lo que me
>> devuelve la API, lo que esta haciendo es buscar un archivo local con ese
>> nombre y me lo muestra en la consola...."
>>
>> Y la funcion siguiente hace exactamente eso:
>>
>> ef saveInfo(content, filename):
>>     with io.open(filename, 'w', encoding='utf8') as file:
>>         file.write(response.text)
>>
>> Aca estas escribiendo un archivo y luego imprimir el contenido por
>> pantalla. y por lo que se entiende del resto del codigo lo estas creando
>> con extension .XML
>>
>> De todas maneras si mal no recuerdo para escribir un archivo XML valido,
>> deberias hacer algo como:
>> Importar ET de element.etree y hacer algo como :
>> my_data = ET.tostring(res_de_api_o_content_xml)
>> file = ipen("sarasa.xml","w)
>> file.write(my_data)
>>
>> Sory si no esta todo correcto , lo escribí asi nomas sin probar ningún
>> código.
>>
>> Saludos.
>>
>> Lucas
>>
>> El lun., 16 dic. 2019 a las 11:02, Federico Brest (<
>> federiconbrest en gmail.com>) escribió:
>>
>>> Hola gente,
>>> Hic eel siguiente script, pero estoy teniendo problemas...cuando se
>>> supone que supone que deberìa crear un XML con lo que me devuelve la API,
>>> lo que esta haciendo es buscar un archivo local con ese nombre y me lo
>>> muestra en la consola....
>>> Algune podrá darme una mano?
>>> Envío el código en cuestión:
>>>
>>> def saveInfo(content, filename):
>>>     with io.open(filename, 'w', encoding='utf8') as file:
>>>         file.write(response.text)
>>>
>>> if __name__ == '__main__':
>>>     cuit = input("Ingrese un numero de cuit: ")
>>>
>>>     print("- Obteniendo información de", cuit)
>>>     info = getInfoFromApi(cuit)
>>>
>>> ''' getInfoFromApi es otra funcion que esta declarada en el script. No
>>> la transcribo porque estan las key de acceso de lcliente...de todas formas,
>>> esa funcion anda '''
>>>
>>>     cuitValido = validar_cuit(cuit) #esta es otra funcion que esta
>>> declarada en el script
>>>     if cuitValido == False:
>>>         print("El Cuit ",cuit," es Invalido")
>>>         print("Presione una tecla para Finalizar...")
>>>         msvcrt.getch()
>>>     else:
>>>         print("cuil válido")
>>>
>>>     filename = cuit + '.xml'
>>>     saveInfo(info, filename)
>>>     print("- Guardado en", filename)
>>>
>>>
>>> Desde ya muchas gracias!!
>>>
>>> --
>>> *          Ing. Federico N. Brest*
>>>   Ingeniero en Sistemas de Información
>>>             Becario Investigador
>>>      Universidad Tecnológica Nacional
>>>       Facultad Regional Buenos Aires
>>>
>>> “*¿El éxito es la meta? Pienso que no. La meta es conseguir, defender y
>>> mantener nuestra libertad*” - Richard Stallman
>>> *P* *Antes de imprimir este mensaje, piense si realmente es necesario.
>>> ¡Cuidemos nuestro Ambiente!*
>>> _______________________________________________
>>> Lista de Correo de PyAr - Python Argentina - pyar en python.org.ar
>>> Sitio web: http://www.python.org.ar/
>>>
>>> Para administrar la lista (o desuscribirse) entrar a
>>> http://listas.python.org.ar/listinfo/pyar
>>>
>>> La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de
>>> Argentina - http://www.usla.org.ar
>>
>> _______________________________________________
>> Lista de Correo de PyAr - Python Argentina - pyar en python.org.ar
>> Sitio web: http://www.python.org.ar/
>>
>> Para administrar la lista (o desuscribirse) entrar a
>> http://listas.python.org.ar/listinfo/pyar
>>
>> La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de
>> Argentina - http://www.usla.org.ar
>
>
>
> --
> *          Ing. Federico N. Brest*
>   Ingeniero en Sistemas de Información
>             Becario Investigador
>      Universidad Tecnológica Nacional
>       Facultad Regional Buenos Aires
>
> “*¿El éxito es la meta? Pienso que no. La meta es conseguir, defender y
> mantener nuestra libertad*” - Richard Stallman
> *P* *Antes de imprimir este mensaje, piense si realmente es necesario.
> ¡Cuidemos nuestro Ambiente!*
> _______________________________________________
> Lista de Correo de PyAr - Python Argentina - pyar en python.org.ar
> Sitio web: http://www.python.org.ar/
>
> Para administrar la lista (o desuscribirse) entrar a
> http://listas.python.org.ar/listinfo/pyar
>
> La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de
> Argentina - http://www.usla.org.ar
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.python.org.ar/pipermail/pyar/attachments/20191216/f2d6cb90/attachment.html>


Más información sobre la lista de distribución pyar