2013-08-19 10 views
63

requestsパッケージとJSON応答を扱う快適な方法が大好きです。Python Requestsパッケージ: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) 

または、応答が特に大きい場合には、インクリメンタルなアプローチを使用します。外部lxml projectが同じAPIの上に構築さ

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` 

はあなたより多くの機能とパワーを与えることまだ。