Python请求包:处理xml响应 [英] Python Requests package: Handling xml response
问题描述
我非常喜欢requests
包及其舒适的方式来处理JSON响应.
不幸的是,我不知道我是否还可以处理XML响应.有没有人体验过如何使用requests
包处理XML响应?是否需要包含另一个用于XML解码的包?
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项目建立在相同的API上,仍可为您提供更多功能和强大功能. /p>
I like very much the requests
package and its comfortable way to handle JSON responses.
Unfortunately, I did not understand if I can also process XML responses. Has anybody experience how to handle XML responses with the requests
package? Is it necessary to include another package for the XML decoding?
requests
does not handle parsing XML responses, no. XML responses are much more complex in nature than JSON responses, how you'd serialize XML data into Python structures is not nearly as straightforward.
Python comes with built-in XML parsers. I recommend you use the ElementTree API:
import requests
from xml.etree import ElementTree
response = requests.get(url)
tree = ElementTree.fromstring(response.content)
or, if the response is particularly large, use an incremental approach:
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`
The external lxml project builds on the same API to give you more features and power still.
这篇关于Python请求包:处理xml响应的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!