135 votes

Paquet Python Requests : Traitement des réponses xml

J'aime beaucoup le requests et sa façon confortable de traiter les réponses JSON.

Malheureusement, je n'ai pas compris si je peux également traiter les réponses XML. Est-ce que quelqu'un a une expérience de la façon de traiter les réponses XML avec l'application requests paquet ? Est-il nécessaire d'inclure un autre paquet pour le décodage XML ?

224voto

Martijn Pieters Points 271458

requests ne gère pas l'analyse des réponses XML, non. Les réponses XML sont beaucoup plus complexes par nature que les réponses JSON, et la façon dont vous sérialisez les données XML dans des structures Python est loin d'être aussi simple.

Python est livré avec des analyseurs XML intégrés. Je vous recommande d'utiliser le API d'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, utiliser une approche incrémentale :

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 de puissance.

18voto

Vincenzo Lavorini Points 263

Une méthode beaucoup plus simple consiste à convertir le XML en un fichier de type dict en utilisant le xmltodict paquet

response = requests.get('http://blabla.com')
dict_data = xmltodict.parse(response.content)

Maintenant, dict_data c'est juste un dictionnaire Python.

Vous pouvez l'installer avec pip : pip install xmltodict

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X