Pacote de solicitações Python: manipulação de resposta xml

114

Gosto muito do requestspacote e de sua maneira confortável de lidar com as respostas JSON.

Infelizmente, não entendi se também posso processar respostas XML. Alguém tem experiência em lidar com respostas XML com o requestspacote? É necessário incluir outro pacote para a decodificação XML?

Andy
fonte

Respostas:

199

requestsnão trata da análise de respostas XML, não. As respostas XML são muito mais complexas por natureza do que as respostas JSON; a maneira como você serializaria dados XML em estruturas Python não é tão direta.

Python vem com analisadores XML integrados. Eu recomendo que você use a API ElementTree :

import requests
from xml.etree import ElementTree

response = requests.get(url)

tree = ElementTree.fromstring(response.content)

ou, se a resposta for particularmente grande, use uma abordagem incremental:

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`

O projeto lxml externo se baseia na mesma API para fornecer a você mais recursos e potência.

Martijn Pieters
fonte