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

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

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


person Andy    schedule 19.08.2013    source источник


Ответы (2)


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

person Martijn Pieters    schedule 19.08.2013
comment
Я всегда использовал lxml, не знал, что он уже существует во встроенном python. - person Shiplu Mokaddim; 12.11.2020

Гораздо проще преобразовать XML в dict с помощью пакета xmltodict.

response = requests.get('http://blabla.com')
dict_data = xmltodict.parse(response.content)

Итак, dict_data это просто словарь Python.

Вы можете установить его с помощью pip: pip install xmltodict

person Vincenzo Lavorini    schedule 28.04.2021