2009-01-15 14 views
8

Estoy usando urllib.urlretrieve para descargar un archivo e implementar una barra de progreso de descarga usando el parámetro reporthook. Desde urlretrieve no soporta directamente la autenticación, se me ocurrióPython: descarga de un archivo a través de HTTP con barra de progreso y autenticación básica

import urllib 

def urlretrieve_with_basic_auth(url, filename=None, reporthook=None, data=None, 
           username="", password=""): 
    class OpenerWithAuth(urllib.FancyURLopener): 
     def prompt_user_passwd(self, host, realm): 
      return username, password 

    return OpenerWithAuth().retrieve(url, filename, reporthook, data) 

Esto funciona - pero parece que podría ser una forma más directa de hacerlo (tal vez con urllib2 o httplib2 o ...) - -¿algunas ideas?

Respuesta

7

urlgrabber tiene soporte integrado para barras de progreso, autenticación y más.

+0

Agradable, funcionará perfectamente para mi proyecto actual – rinti

+3

El URI de Ignacio está ahora (2010-06-25) desactualizado, la actualización uno es [urlgrabber] (http://linux.duke.edu/urlgrabber/) – Albireo

+1

Nuevo URI: http://urlgrabber.baseurl.org/ –

Cuestiones relacionadas