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?

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.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.