web-dev-qa-db-fra.com

Python Requests package: Gestion de la réponse xml

J'aime beaucoup le package requests et sa manière confortable de gérer les réponses JSON.

Malheureusement, je n'ai pas compris si je pouvais également traiter les réponses XML. Quelqu'un at-il déjà expérimenté comment gérer les réponses XML avec le package requests? Est-il nécessaire d'inclure un autre package pour le décodage XML?

91
Andy

requests ne gère pas l'analyse des réponses XML, non. Les réponses XML sont de nature beaucoup plus complexe que les réponses JSON. Comment sérialiser des données XML dans des structures Python n'est pas aussi simple.

Python est livré avec des analyseurs XML intégrés. Je vous recommande d'utiliser le API ElementTree :

import requests
from xml.etree import ElementTree

response = requests.get(url)

tree = ElementTree.fromstring(response.content)

ou, si la réponse est particulièrement grande, utilisez une approche progressive:

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`

L'extérieur projet lxml s'appuie sur la même API pour vous offrir encore plus de fonctionnalités et plus de puissance.

162
Martijn Pieters