Я пытаюсь написать питон коды для загрузки и сохранения файла из этого URL: http://obiee.banrep.gov.co/analytics/saw.dll?Download&Format=excel&Extension=.xls&BypassCache=true&lang=es&NQUser=publico&NQPassword=publico&Path=/shared/Consulta%20Series%20Estadisticas%20desde%20Excel/1.%20IPC%20base%202008/1.3.%20Por%20rango%20de%20fechas/1.3.2.%20Por%20grupo%20de%20gasto&ViewState=h09v965dvurdtkj0iuni7m1kbe&ContainerID=o%3ago%7er%3areport&RootViewID=goPython: загрузка файла, который сопротивляется обычными методами
Ожидаемого результат должен быть, чтобы загрузить и сохранить обслуживаемый файл Excel.
Файл находится за некоторой базой данных оракула. Файл загружается в любом браузере. Расширение firefox в Live HTTP-заголовках говорит мне, что это запрос GET. В любом случае я пробовал обычные методы, и я всегда загружаю «saw.dll», который представляет собой простой XML-файл, а не ожидаемый файл Excel.
Вот что я пробовал:
import urllib,urlib2,shutil
url = 'http://obiee.banrep.gov.co/analytics/saw.dll?Download'
values = {
'Format' : 'excel',
'Extension' : '.xls',
'BypassCache' : 'true',
'lang' : 'es',
'NQUser' : 'publico',
'NQPassword' : 'publico',
'Path' : '/shared/Consulta Series Estadisticas desde Excel/1. IPC base 2008/1.3. Por rango de fechas/1.3.2. Por grupo de gasto',
'ViewState' : 'h09v965dvurdtkj0iuni7m1kbe',
'ContainerID' : 'o%3ago%7er%3areport',
'RootViewID' : 'go',
}
data = urllib.urlencode(values)
req = urllib2.Request(url,data)
response = urllib2.urlopen(req)
myfile = open('test.xls', 'wb')
shutil.copyfileobj(response.fp, myfile)
myfile.close()
Другой код, который я пробовал:
import requests,shutil
response = requests.get("http://obiee.banrep.gov.co/analytics/saw.dll?Download&Format=excel&Extension=.xls&BypassCache=true&lang=es&NQUser=publico&NQPassword=publico&Path=/shared/Consulta%20Series%20Estadisticas%20desde%20Excel/1.%20IPC%20base%202008/1.3.%20Por%20rango%20de%20fechas/1.3.2.%20Por%20grupo%20de%20gasto&ViewState=h09v965dvurdtkj0iuni7m1kbe&ContainerID=o%3ago%7er%3areport&RootViewID=go",stream=True)
with open('test.xls', 'wb') as out_file:
shutil.copyfileobj(response.raw, out_file)
del response
Я также попробовал другие вещи, такие, как с помощью wget, помещая некоторую задержку между запросом и сохранение, и т.д.
Любые идеи?
Спасибо, лучше всего.
.xls - это формат XML ... Я не думаю, что вы пробовали открыть файл в excel? –
Я сделал, но ожидаемый файл «1.3.2. Por grupo de gasto.xls», который является файлом данных. Открытие файла saw.dll (который является файлом, который загружаются моими кодами фактически в Excel), но его просто простой xml-файл, который мне не нужен ... – benzineengine