Frage Paket Python-Anfragen: Behandlung der XML-Antwort


Ich mag das sehr requests Paket und seine bequeme Art, JSON-Antworten zu behandeln.

Leider habe ich nicht verstanden, ob ich auch XML-Antworten verarbeiten kann. Hat jemand Erfahrung damit, wie man mit XML - Antworten umgehen kann? requests Paket? Ist es notwendig, ein anderes Paket wie z urllib2 für die XML-Decodierung?


75
2017-08-19 07:29


Ursprung


Antworten:


requests behandelt nicht die Analyse von XML-Antworten, nein. XML-Antworten sind viel komplexer als JSON-Antworten. Wie Sie XML-Daten in Python-Strukturen serialisieren, ist bei weitem nicht so einfach.

Python wird mit integrierten XML-Parsern ausgeliefert. Ich empfehle Ihnen, die ElementTree API:

import requests
from xml.etree import ElementTree

response = requests.get(url)

tree = ElementTree.fromstring(response.content)

oder, wenn die Antwort besonders groß ist, verwenden Sie einen inkrementellen Ansatz:

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`

Das Äußere Lxml-Projekt baut auf der gleichen API auf, um Ihnen noch mehr Funktionen und Leistung zu bieten.


132
2017-08-19 07:33