[pyar] xml.etree.ElementTree

Augusto adtononi en gmail.com
Lun Dic 16 15:16:01 -03 2019


Tenes un problema con las variables también. En la función save le pasas
content y filename, pero después intentas guardar response.text, de donde
sale eso?

Yo te recomiendo que generes el xml al momento que obtenés la info de la
API, y no hacer las cosas por separado.

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

> Cuidado con comprartir las credenciales de la API, esa parte no hace
>> falta.
>>
>
> No hay problema con eso, fueron caracteres alfanuméricos colocados al
> azar, no son credenciales verdaderas
>
>>
>> Después, tu función getInfoFromApi no devuelve nada. Fijate que tenes
>> comentada la línea del content
>>
>
> Si, me percaté de ese detalle y lo descomenté. Aun asi falla la
> funcionalidad de escribir el archivo XML
>
>>
>> Tu idea es parar todo el source code de la página a un xml?
>>
>
> La idea es almacenar en un XML la respuesta recibida de la API
>
> Cualquier ayuda que puedan brindar es más que bienvenida :)
> Saludos,
>
>>
>>
>> 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
>>
>> _______________________________________________
>> 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/7c303564/attachment-0001.html>


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