Разбор сжатого XML-канала в ElementTree

Я пытаюсь проанализировать следующий канал в ElementTree в Python: "http://smarkets.s3.amazonaws.com/oddsfeed.xml"(предупреждение большого файла)

Вот что я пробовал до сих пор:

feed = urllib.urlopen("http://smarkets.s3.amazonaws.com/oddsfeed.xml")

# feed is compressed
compressed_data = feed.read()
import StringIO
compressedstream = StringIO.StringIO(compressed_data)
import gzip
gzipper = gzip.GzipFile(fileobj=compressedstream)
data = gzipper.read()

# Parse XML
tree = ET.parse(data)

но, кажется, просто держисьcompressed_data = feed.read()бесконечно может быть ?? (Я знаю, что это большой файл, но он кажется слишком длинным по сравнению с другими несжатыми фидами, которые я проанализировал, и этот большой размер убивает все приросты пропускной способности от сжатия gzip).

Далее я попробовалrequests, с

url = "http://smarkets.s3.amazonaws.com/oddsfeed.xml"
headers = {'accept-encoding': 'gzip, deflate'}
r = requests.get(url, headers=headers, stream=True)

но сейчас

tree=ET.parse(r.content)

или же

tree=ET.parse(r.text)

но они поднимают исключения.

Какой правильный способ сделать это?

Ответы на вопрос(2)

Ваш ответ на вопрос