2009-01-15 13 views
8

Bir dosyayı indirmek ve reporthook parametresini kullanarak bir indirme ilerleme çubuğu uygulamak için urllib.urlretrieve kullanıyorum. urlretrieve yana doğrudan kimlik doğrulamasını desteklemiyorsa, ben bu işleriPython - ilerleme çubuğu ve temel kimlik doğrulaması ile HTTP üzerinden bir dosya indirme

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) 

ile geldi - ama (belki ... urllib2 ile veya httplib2 ya) bunu yapmak için daha doğrudan bir yolu olabilir gibi görünüyor - -herhangi bir fikir?

cevap

7

urlgrabber, ilerleme çubukları, kimlik doğrulaması ve daha fazlası için yerleşik desteğe sahiptir.

+0

Güzel, benim şimdiki proje için acağından – rinti

+3

Ignacio'nun URI şu anda eskimiş (2010-06-25), güncellemek biri [Urlgrabber'a] şeklindedir (http://linux.duke.edu/urlgrabber/) – Albireo

+1

Yeni olan URI: http://urlgrabber.baseurl.org/ –