Paquete Python Requests: Manejo de respuesta xml

114

Me gusta mucho el requestspaquete y su forma cómoda de manejar las respuestas JSON.

Desafortunadamente, no entendí si también puedo procesar respuestas XML. ¿Alguien ha experimentado cómo manejar respuestas XML con el requestspaquete? ¿Es necesario incluir otro paquete para la decodificación XML?

Andy
fuente

Respuestas:

199

requestsno maneja el análisis de respuestas XML, no. Las respuestas XML son de naturaleza mucho más compleja que las respuestas JSON, la forma en que serializaría los datos XML en estructuras de Python no es tan sencilla.

Python viene con analizadores XML integrados. Te recomiendo que uses la API ElementTree :

import requests
from xml.etree import ElementTree

response = requests.get(url)

tree = ElementTree.fromstring(response.content)

o, si la respuesta es particularmente grande, utilice un enfoque incremental:

response = requests.get(url, stream=True)
# if the server sent a Gzip or Deflate compressed response, decompress
# as we read the raw stream:
response.raw.decode_content = True

events = ElementTree.iterparse(response.raw)
for event, elem in events:
    # do something with `elem`

El proyecto externo lxml se basa en la misma API para brindarle aún más funciones y potencia.

Martijn Pieters
fuente