2013-08-19 8 views
63

Bardzo lubię pakiet requests i jego wygodny sposób obsługi odpowiedzi JSON.Pakiet zapytań do Pythona: obsługa odpowiedzi xml

Niestety, nie rozumiem, czy mogę również przetwarzać odpowiedzi XML. Czy ktoś ma doświadczenie w obsłudze odpowiedzi XML z pakietem requests? Czy konieczne jest dołączenie innego pakietu, takiego jak urllib2 do dekodowania XML?

Odpowiedz

114

requests nie obsługuje parsujących odpowiedzi XML, nie. Odpowiedzi XML są o wiele bardziej złożone niż odpowiedzi JSON, a to, jak serializujesz dane XML w strukturach Pythona, nie jest tak proste.

Python ma wbudowane analizatory składni XML. Polecam użyć ElementTree API:

import requests 
from xml.etree import ElementTree 

response = requests.get(url) 

tree = ElementTree.fromstring(response.content) 

lub, jeśli odpowiedź jest szczególnie duży, użyj przyrostowe podejście:

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 lxml project opiera się na tym samym API daje więcej możliwości i moc nadal.