[Python-es] Descarga de fichero con urllib2

Kiko kikocorreoso en gmail.com
Mar Abr 3 11:55:05 CEST 2012


Hola.

Estoy intentando descargar un fichero usando urllib2. Lo que hago es lo
siguiente:

##################################################################################
import urllib2

# Estoy saliendo por un proxy
proxy = urllib2.ProxyHandler({'http':
'http://user:password@proxyserver.com:8080'})
auth = urllib2.HTTPBasicAuthHandler()
opener = urllib2.build_opener(proxy, auth, urllib2.HTTPHandler)
urllib2.install_opener(opener)

# Ahora 'conecto' con el fichero y lo guardo
remotefile = urllib2.urlopen('
http://soprano.cls.fr/searchL2/searchL2/L2/windProducts/getNetCDF/2052')
localfile = open('mifichero.nc', 'w')
localfile.write(remotefile.read())
localfile.close()
##################################################################################

El fichero que me intento descargar es un fichero netCDF (
http://www.unidata.ucar.edu/software/netcdf/). Si lo descargo a mano me
ocupa x y si lo descargo como he puesto anteriormente me ocupa x + y.

Si abro el fichero descargado a mano con netcdf4-python (
http://code.google.com/p/netcdf4-python/) no tengo ningún problema pero si
abro el bajado con el anterior script tengo errores.

He estado mirando lo siguiente:
In [24]: for key in remotefile.info().keys(): print key, ' = '
remotefile.info()[key]

que me da el siguiente output
content-length  =  6418252
content-disposition  =
filename=ASA_WSM_1PNPDE20120402_111643_000000923113_00181_52781_8898_wind.nc
age  =  3
server  =  Cherokee/1.0.8 (Debian GNU/Linux)
connection  =  close
pragma  =  no-cache
cache-control  =  no-cache
date  =  Tue, 03 Apr 2012 09:19:39 GMT
content-type  =  application/x-netcdf

Donde content-lenght refleja el número de bytes reales que tiene el fichero
descargado a mano (la x anterior). El descargado con python me ocupa (x + y
= 6435760)

Entiendo que usando localfile (open, write, close) me está guardando cosas
que no quiero (¿el servidor envía cabeceros y cosas así? Lo siento, con
estos temas me pierdo un poco).

¿Como puedo guardar solo lo que quiero, es decir, el fichero en sí, igual
que si me lo descargo a mano?

Espero se entienda mi duda y disculpad si la duda es muy evidente, no suelo
usar urllib2 y ando un poco perdido.

Saludos y gracias por adelantado.
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://mail.python.org/pipermail/python-es/attachments/20120403/3788e9dc/attachment.html>


Más información sobre la lista de distribución Python-es