Pacchetto richieste Python: gestione della risposta xml


114

Mi piace molto il requestspacchetto e il suo modo comodo di gestire le risposte JSON.

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

Risposte:


199

requestsnon gestisce l'analisi delle risposte XML, no. Le risposte XML sono di natura molto più complessa delle risposte JSON, il modo in cui serializzare i dati XML nelle strutture Python non è altrettanto semplice.

Python viene fornito con parser XML incorporati. Ti consiglio di utilizzare l' API ElementTree :

import requests
from xml.etree import ElementTree

response = requests.get(url)

tree = ElementTree.fromstring(response.content)

oppure, se la risposta è particolarmente ampia, 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`

Il progetto lxml esterno si basa sulla stessa API per darti ancora più funzionalità e potenza.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.