Pakiet żądań języka Python: obsługa odpowiedzi xml


114

Bardzo podoba mi się ten requestspakiet i jego wygodny sposób obsługi odpowiedzi JSON.

Niestety nie zrozumiałem, czy potrafię również przetwarzać odpowiedzi XML. Czy ktoś ma doświadczenie w obsłudze odpowiedzi XML z requestspakietem? Czy konieczne jest dołączenie innego pakietu do dekodowania XML?

Odpowiedzi:


199

requestsnie obsługuje analizowania odpowiedzi XML, nie. Odpowiedzi XML mają znacznie bardziej złożony charakter niż odpowiedzi JSON, a sposób serializacji danych XML do struktur Pythona nie jest tak prosty.

Python zawiera wbudowane parsery XML. Polecam korzystanie z API ElementTree :

import requests
from xml.etree import ElementTree

response = requests.get(url)

tree = ElementTree.fromstring(response.content)

lub, jeśli odpowiedź jest szczególnie duża, zastosuj podejście przyrostowe:

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`

Zewnętrzny projekt lxml opiera się na tym samym interfejsie API, aby zapewnić więcej funkcji i możliwości.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.