[pyar] xml.etree.ElementTree

Federico Brest federiconbrest en gmail.com
Lun Dic 16 15:28:21 -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?
>

La verdad es que ya no me acuerdo jajaja

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

Buen consejo! como sería el código entonces?



>
> 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
>
> _______________________________________________
> 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!*
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.python.org.ar/pipermail/pyar/attachments/20191216/1e85d935/attachment-0001.html>


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