Pertanyaan Paket Python Requests: Menangani respons xml


Saya sangat suka itu requests paket dan cara yang nyaman untuk menangani tanggapan JSON.

Sayangnya, saya tidak mengerti apakah saya juga dapat memproses tanggapan XML. Ada yang mengalami bagaimana menangani tanggapan XML dengan requests paket? Apakah perlu memasukkan paket lain seperti urllib2 untuk decoding XML?


75
2017-08-19 07:29


asal


Jawaban:


requests tidak menangani parsing tanggapan XML, tidak. Respons XML jauh lebih kompleks daripada respons JSON, bagaimana Anda membuat data XML dalam struktur Python tidak sesederhana itu.

Python dilengkapi dengan parser XML built-in. Saya sarankan Anda menggunakan API ElementTree:

import requests
from xml.etree import ElementTree

response = requests.get(url)

tree = ElementTree.fromstring(response.content)

atau, jika responsnya sangat besar, gunakan pendekatan tambahan:

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`

Eksternal proyek lxml dibangun di API yang sama untuk memberi Anda lebih banyak fitur dan daya listrik.


132
2017-08-19 07:33