Paket Permintaan Python: Menangani respons xml

114

Saya sangat menyukai requestspaketnya dan caranya yang nyaman untuk menangani tanggapan JSON.

Sayangnya, saya tidak mengerti apakah saya juga dapat memproses tanggapan XML. Adakah yang punya pengalaman bagaimana menangani tanggapan XML dengan requestspaket? Apakah perlu menyertakan paket lain untuk decoding XML?

Andy
sumber

Jawaban:

199

requeststidak menangani penguraian tanggapan XML, tidak. Respons XML jauh lebih kompleks daripada respons JSON, cara Anda membuat serialisasi data XML ke dalam struktur Python hampir tidak semudah itu.

Python hadir dengan pengurai XML bawaan. Saya sarankan Anda menggunakan ElementTree API :

import requests
from xml.etree import ElementTree

response = requests.get(url)

tree = ElementTree.fromstring(response.content)

atau, jika responsnya sangat besar, gunakan pendekatan inkremental:

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`

Proyek lxml eksternal dibangun di atas API yang sama untuk memberi Anda lebih banyak fitur dan kekuatan.

Martijn Pieters
sumber