Пакет запросов Python: обработка ответа xml

114

Мне очень нравится этот requestsпакет и его удобный способ обработки ответов JSON.

К сожалению, я не понял, могу ли я также обрабатывать ответы XML. Кто-нибудь знает, как обрабатывать XML-ответы с помощью requestsпакета? Нужно ли включать другой пакет для декодирования XML?

Энди
источник

Ответы:

199

requestsне обрабатывает синтаксический анализ ответов XML, нет. Ответы XML гораздо сложнее по своей природе, чем ответы JSON, поэтому сериализовать данные XML в структуры Python не так просто.

Python поставляется со встроенными синтаксическими анализаторами XML. Я рекомендую вам использовать API ElementTree :

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, чтобы предоставить вам больше возможностей и мощности.

Мартейн Питерс
источник