2013-08-19 7 views
63

Mi piace molto il pacchetto requests e il suo modo comodo di gestire le risposte JSON.Pacchetto Python Richieste: gestione della risposta xml

Sfortunatamente, non ho capito se posso anche elaborare le risposte XML. Qualcuno ha esperienza su come gestire le risposte XML con il pacchetto requests? È necessario includere un altro pacchetto come urllib2 per la decodifica XML?

risposta

114

requests non gestisce le risposte XML di analisi, no. Le risposte XML sono di natura molto più complessa delle risposte JSON, il modo in cui serializzare i dati XML in strutture Python non è così semplice.

Python è dotato di parser XML incorporati. Vi consiglio di utilizzare il ElementTree API:

import requests 
from xml.etree import ElementTree 

response = requests.get(url) 

tree = ElementTree.fromstring(response.content) 

o, se la risposta è particolarmente grande, utilizzare un approccio incrementale:

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'esterno lxml project costruisce sulla stessa API per dare più caratteristiche e potere ancora.