我試圖解析以下料成的ElementTree在Python:「http://smarkets.s3.amazonaws.com/oddsfeed.xml」(警告大文件)解析壓縮的XML飼料到ElementTree的
這裏是我到目前爲止已經試過:
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()
,無限可能? (我知道這是一個很大的文件,但與我解析的其他非壓縮Feed相比,似乎太長了,而這個大文件首先會消除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)
但這些引發異常。
這樣做的正確方法是什麼?
「這些引發異常」沒有幫助。 _什麼例外?將追溯複製並粘貼到您的問題中。 – abarnert 2014-10-18 00:26:03
另外,你爲什麼要嘗試傳遞一個HTTP頭作爲POST數據?他們不是一回事。 – abarnert 2014-10-18 00:26:40