2013-08-19 109 views
63

我非常喜歡requests包及其處理JSON響應的舒適方法。Python請求包:處理xml響應

不幸的是,我不明白我是否也可以處理XML響應。有沒有人體驗過如何使用requests軟件包處理XML響應?是否有必要在XML解碼中包含另一個包,如urllib2

回答

114

requests不處理解析XML響應,沒有。 XML響應本質上比JSON響應複雜得多,您如何將XML數據序列化到Python結構中並不那麼簡單。

Python帶有內置的XML解析器。我建議你使用ElementTree API

import requests 
from xml.etree import ElementTree 

response = requests.get(url) 

tree = ElementTree.fromstring(response.content) 

,或者,如果反應特別大,用漸進的方法:

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` 

外部lxml project建立在相同的API給你更多的功能和力量仍然。