2013-08-19 3 views
63

J'aime beaucoup le paquet requests et sa manière confortable de gérer les réponses JSON.Paquet de demandes Python: Gestion de la réponse xml

Malheureusement, je n'ai pas compris si je pouvais aussi traiter des réponses XML. Quelqu'un at-il l'expérience de la gestion des réponses XML avec le package requests? Est-il nécessaire d'inclure un autre package tel que urllib2 pour le décodage XML?

Répondre

114

requests ne gère pas les réponses XML d'analyse, non. Les réponses XML sont beaucoup plus complexes que les réponses JSON, la façon dont vous sérialiseriez les données XML dans les structures Python n'est pas aussi simple.

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

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 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` 

Le lxml project externe construit sur la même API pour vous donner plus de fonctionnalités et la puissance encore.