2009-01-15 31 views
8

Tôi đang sử dụng urllib.urlretrieve để tải xuống tệp và triển khai thanh tiến trình tải xuống bằng thông số reporthook. Kể từ urlretrieve không trực tiếp hỗ trợ xác thực, tôi đã đưa raPython - tải xuống tệp qua HTTP với thanh tiến trình và xác thực cơ bản

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) 

này hoạt động - nhưng nó có vẻ như có thể có một cách trực tiếp hơn để làm điều này (có thể với urllib2 hoặc httplib2 hoặc ...) - -những ý tưởng?

Trả lời

7

urlgrabber có hỗ trợ tích hợp cho thanh tiến trình, xác thực và hơn thế nữa.

+0

Tốt, sẽ hoạt động hoàn hảo cho dự án hiện tại của tôi – rinti

+3

URI của Ignacio hiện tại (2010-06-25) đã lỗi thời, cập nhật một là [urlgrabber] (http://linux.duke.edu/urlgrabber/) – Albireo

+1

Mới URI: http://urlgrabber.baseurl.org/ –

Các vấn đề liên quan