Package de requêtes Python: gestion de la réponse xml

114

J'aime beaucoup le requestspackage 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 a-t-il déjà appris à gérer les réponses XML avec le requestspackage? Est-il nécessaire d'inclure un autre package pour le décodage XML?

Andy
la source

Réponses:

199

requestsne 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, la façon dont vous sérialiseriez 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 l' 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 importante, utilisez une approche incrémentielle:

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`

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

Martijn Pieters
la source